В этом примере показано, как контролировать состояние аккумулятора электромобиля в полевых условиях с использованием развернутой версии оценки параметров в Simulink ® Design Optimization™ совместно с Simulink Compiler™.
Батареи в электромобилях являются дорогостоящими для замены и нуждаются в тщательном контроле и обслуживании, чтобы гарантировать их работоспособность в течение предполагаемого срока службы. В этом примере электромобиль приводят на работу и обратно в ежедневное сообщение. Дома автомобиль подключается к умному зарядному устройству, которое отслеживает и ток, и напряжение батареи. Зарядное устройство анализирует данные батареи для оценки параметров батареи, используя развернутую версию оценки параметров в Simulink Design Optimization вместе с Simulink Compiler. Зарядное устройство передает эти параметры производителю автомобиля через Интернет вещей (IoT), чтобы производитель мог контролировать работоспособность аккумулятора с течением времени.
В этом примере оцениваются параметры простой модели аккумуляторной батареи, sdoBattery. Вход в sdoBattery - ток батареи, а выходной сигнал модели - напряжение на клемме батареи, которое вычисляется из состояния заряда батареи.
Модель батареи основана на уравнении:
V-KQmax1-ss
где:
- напряжение на клемме батареи в вольтах.
- постоянное напряжение батареи в вольтах.
- сопротивление поляризации батареи в Омах.
- максимальная емкость аккумулятора в ампер-часах. - начальное состояние заряда батареи в ампер-часах.
- состояние заряда батареи, при этом 1 заряжается полностью, а 0 разряжается. Состояние заряда батареи вычисляется из интеграла тока батареи с положительным током, указывающим разряд, и отрицательным током, указывающим заряд.
- это падение напряжения при зарядке, выраженное как доля постоянного напряжения батареи.
Для открытия модели используйте следующую команду.
open_system('sdoBattery')Известны следующие характеристики батареи:
Напряжение, = 400V
Коэффициент потерь, = 0,012
Сопротивление, = 0,32 Ом.
Известно, что Qmax является 250 ампер-часами (100 кВт· ч), когда батарея является новой. Ожидается, что по мере старения батареи будет уменьшаться, и это отслеживается для отслеживания состояния батареи. Необходимо оценить начальное состояние заряда Q0 и новую емкость Qmax батареи.
Существует два основных шага для выполнения оценки параметров в развернутом режиме:
Создание файла настройки для настройки объектов оценки параметров для использования в развернутом режиме
Создание файла запуска, который является функцией MATLAB для оценки параметров, которые могут быть скомпилированы и запущены в развернутом режиме
Рекомендуется создавать файлы установки и запуска, начиная с кода MATLAB, созданного с помощью средства оценки параметров. Скопируйте, разделите и измените созданный код, чтобы создать файлы установки и запуска, как показано в следующем разделе.
Сначала создайте код MATLAB для оценки и в неразвернутом режиме. Для загрузки предварительно сконфигурированного сеанса оценки используйте следующие команды:
load sdoBattery_spesession_forDeployment
spetool(SDOSessionData)
Этот шаг загружает и строит график эксперимента с измеренными данными напряжения и тока и настраивает модуль оценки параметров для оценки и .
Перейдите к кнопке Оценка на панели инструментов и в раскрывающемся списке выберите Создать функцию MATLAB (см. Создание кода MATLAB для проблем оценки параметров (GUI)). На этом шаге создается функция MATLAB, которая добавляется в редактор MATLAB, и MAT-файл. parameterEstimation_sdoBattery_Data.mat. Созданный код доступен в файле parameterEstimationSdoBattery.m. Созданный код можно использовать для оценки параметров в неразвернутом режиме.
Рекомендуется начать с этого созданного кода и скопировать, разделить и изменить код для создания файлов установки и запуска, описанных в следующих разделах.
Для оценки параметров в развернутом режиме код для оценки неразвернутых параметров может быть разделен на файл установки для использования в неразвернутом режиме и файл запуска для использования в развернутом режиме. Файл установки доступен как parameterEstimationSdoBattery_setup.m и основными частями являются:
Определение параметров
Определение экспериментов
Подготовка к развертыванию и сохранение
Параметры определены в parameterEstimationSdoBattery_setup.m аналогично сгенерированному коду MATLAB, parameterEstimationSdoBattery.m. Используйте sdo.getParameterFromModel команда для создания объекта параметра, содержащего поля для значения параметра, минимума и максимума, и поле («Free»), указывающее, будет ли параметр настроен во время оценки.
В этом примере информация о параметрах также хранится в базе данных, в которой автомобили идентифицируются кодом, похожим на псевдоопознавательный номер транспортного средства (VIN). Производитель автомобиля может использовать это для мониторинга состояния аккумулятора с течением времени. parameterEstimationSdoBattery_setup.m файл использует базу данных VIN для обновления значений параметров батареи. См. раздел parameterEstimationSdoBattery_setup.m для получения дополнительной информации.
Начальная база данных загружается из файла MATLAB sdoBatteryVinDatabase.mat база данных VIN хранится в переменной vinDatabase. Это - containers.Map объект и ключ VIN 4DEF используется для поиска параметров батареи в этом примере.
Управляемый
vinDatabase("4DEF")
для отображения следующей таблицы:

Эксперименты определены в parameterEstimationSdoBattery_setup.m аналогично сгенерированному коду MATLAB, parameterEstimationSdoBattery.m. В экспериментах измерялись данные и информация о конкретных портах или сигналах в модели, которые связаны с данными.
В конце parameterEstimationSdoBattery_setup.m определите симулятор, который может запускать модель и сравнивать выходные данные модели с измеренными данными. Используйте prepareToDeploy для настройки экспериментов и симулятора таким образом, чтобы их можно было использовать в развернутом режиме. Сохраните подготовленные объекты в MAT-файле.

При выполнении этих шагов на другой модели и подготовке к развертыванию может появиться запрос на сохранение модели для продолжения после выполнения функции установки. Сохраните модель, чтобы сохранить параметры ведения журнала, которые должны быть в развернутом режиме.
Файл выполнения parameterEstimationSdoBattery_run.m использует объекты, сохраненные в sdoBatteryObjectsToDeploy.mat для оценки параметров в развернутом режиме.
Файл запуска доступен как parameterEstimationSdoBattery_run.m и основными частями являются:
Загрузка предварительно настроенных объектов развертывания
Обновление экспериментов и параметров
Оптимизация выполнения
Обновить базу данных параметров
parameterEstimationSdoBattery_run.m необходима прагматика, чтобы компилятор Simulink включал модель в скомпилированный код следующим образом:

Загрузка предварительно настроенных объектов, сохраненных в конце parameterEstimationSdoBattery_setup.m файл следующим образом:

parameterEstimationSdoBattery_run.m файл принимает два входных аргумента:
dataFilename имя файла данных для данных эксперимента
vin идентификационный номер транспортного средства для значений параметров;
Считывание данных из текстового файла с разделителями-запятыми (CSV), указанного в dataFilename. Для обновления развернутых экспериментов с новыми входными и выходными данными (данными о токе и напряжении для этой модели) используется команда startIOData. Поскольку данные получены из CSV-файла, не требуется getData функция, которая присутствует в сгенерированном коде MATLAB, parameterEstimationSdoBattery.m.

Используйте VIN в качестве ключа для поиска параметров батареи этого автомобиля в базе данных параметров. Используйте текущее значение из базы данных для обновления начальных значений параметров перед запуском новой оценки. См. раздел parameterEstimationSdoBattery_run.m для получения дополнительной информации.
Следующие несколько шагов в parameterEstimationSdoBattery_run.m очень похожи на код в parameterEstimationSdoBattery.m (для неразвернутой оценки). Определите дескриптор целевой функции оценки, укажите опции оптимизации и используйте sdo.optimize функция. На этом шаге выполняется запуск модели и сравнение выходных данных модели с данными эксперимента. Параметры настраиваются для достижения тесного соответствия между моделью и данными.
Целевая функция определяется в подфункции sdoBattery_optFcn которая также похожа на целевую функцию в parameterEstimationSdoBattery.m. Однако необходимо указать имя переменной регистрации сигнала, поскольку ее невозможно запросить у модели в развернутом режиме.

Определение имени переменной ('logsout'в этом случае) запросите модель у MATLAB в неразвернутом режиме:
get_param('sdoBattery','SignalLoggingName')
Либо в Simulink используйте вкладку Моделирование (Modeling) на панели инструментов и щелкните Параметры модели (Model Settings). В диалоговом окне конфигурации выберите Импорт/экспорт данных и найдите имя переменной в Signal logging коробка.
После звонка sdo.optimize в основной функции parameterEstimationSdoBattery_run.mобновите базу данных VIN. Для каждого оцениваемого параметра скопируйте CurrentValue в PreviousValue а затем использовать новую оценку параметров для обновления CurrentValue. Посмотрите parameterEstimationSdoBattery_run.m для получения дополнительной информации.

Используйте mcc для компиляции parameterEstimationSdoBattery_run.m в окне команд MATLAB или в командной строке DOS или UNIX. Для выполнения следующих действий необходимо установить среду выполнения MATLAB. Дополнительные сведения см. в разделе Установка и настройка среды выполнения MATLAB (компилятор MATLAB).

Выполнить оценку параметров в развернутом режиме.

В MATLAB выполните команду
vinDatabase("4DEF")
для отображения следующего результата:

В таблице ниже приведены оценки параметров батареи и во времени. Файл sdoBattery_Data1.csv содержит данные для батареи, когда она была новой, sdoBattery_Data2.csv содержит данные для батареи в возрасте 1 года и sdoBattery_Data3.csv содержит данные для батареи, когда ей было 2 года.

Обратите внимание, что емкость аккумулятора со временем ухудшается. В первый год наблюдается высокая скорость деградации, после которой скорость деградации снижается. Когда батарея была новой, двухпозиционное сообщение оставляло состояние заряда батареи на уровне 61%, в то время как через 2 года коммутационное устройство оставляло состояние заряда батареи на уровне 47%. Если состояние заряда падает ниже 40%, это условие уменьшает количество подзарядок батареи. Отслеживая параметры аккумулятора с течением времени, производитель может контролировать состояние аккумулятора и определить, нужен ли автомобилю новый аккумулятор.
prepareToDeploy(Experiment) | prepareToDeploy(SimulationTest) | sdo.Experiment | sdo.SimulationTest | updateIOData(Experiment)