Этот пример показывает, как контролировать условие батареи электромобиля в поле с развернутой версией оценки параметра в Simulink ® Design Optimization™, вместе с Compiler™ Simulink.
Батареи в электрических транспортных средствах являются дорогими для замены и нуждаются в тщательном контроле и обслуживании, чтобы убедиться, что они хорошо функционируют в течение предполагаемого срока службы. В этом примере электромобиль ездит на работу и обратно по ежедневной поездке. Дома автомобиль подключается к умному зарядному устройству, которое контролирует как ток, так и напряжение аккумулятора. Зарядное устройство анализирует данные батареи, чтобы оценить параметры батареи, используя развернутую версию оценки параметра в Simulink Design Optimization, совместно с Simulink Compiler. Зарядное устройство передает эти параметры производителю автомобиля через соединение Интернета вещей (IoT), чтобы производитель мог контролировать состояние батареи с течением времени.
Этот пример оценивает параметры простой, перезаряжаемой модели батареи, sdoBattery
. Вход в sdoBattery
является током батареи, и выход модели является напряжением на клемме батареи, которое вычисляется из состояния заряда батареи.
Модель батареи основана на уравнении:
где:
- напряжение на клемме батареи в вольтах.
- постоянное напряжение батареи в вольтах.
- сопротивление поляризации батареи в Омсе.
- максимальная емкость батареи в ампер-часах. - начальное состояние заряда батареи в ампер-часах.
- состояние заряда батареи, причем 1 полностью заряжен и 0 разряжен. Состояние заряда батареи вычисляется из интеграла тока батареи с положительным током, указывающим на разряд и отрицательным током, указывающим на зарядку.
- падение напряжения при зарядке, выраженное в виде части постоянного напряжения батареи.
Используйте следующую команду, чтобы открыть модель.
open_system('sdoBattery')
Известны следующие характеристики батареи:
Напряжение, 400 В
Коэффициент потерь, = 0.012
Сопротивление, 0,32 Ом.
известно, что 250 Ampere-часы (100 кВтч), когда батарея новая. Когда батарея стареет, ожидается уменьшение, и это контролируется, чтобы отслеживать состояние батареи. Начальное состояние заряда и новые емкости батареи необходимо оценить.
Существует два основных шага для запуска оценки параметра в развернутом режиме:
Составьте файл настройки, чтобы настроить объекты оценки параметров для использования в развернутом режиме
Создайте файл запуска, который является функцией MATLAB для оценки параметра, которая может быть скомпилирована и запущена в развернутом режиме
Рекомендуется создать настройку и запустить файлы, начав с кода MATLAB, сгенерированного из Parameter Estimator. Скопируйте, разделите и измените сгенерированный код, чтобы создать файлы настройки и запуска, как показано в следующем разделе.
Сначала сгенерируйте код MATLAB для оценки и в неразвернутом режиме. Используйте следующие команды для загрузки предварительно сконфигурированного сеанса оценки:
load sdoBattery_spesession_forDeployment
spetool(SDOSessionData)
Этот шаг загружает и строит график эксперимента с измеренными данными о напряжении и токе и конфигурирует Parameter Estimator, чтобы оценить и .
Перейдите к кнопке Estimate на панели инструментов и из выпадающего списка выберите Generate MATLAB Function (смотрите Сгенерировать код MATLAB для задач оценки параметра (GUI)). Этот шаг генерирует функцию MATLAB, которая добавляется в редактор MATLAB, и MAT-файл parameterEstimation_sdoBattery_Data.mat
. Сгенерированный код доступен для вас в файловой parameterEstimationSdoBattery.m
. Можно использовать сгенерированный код для оценки параметров в неразвернутом режиме.
Рекомендуется начать с этого сгенерированного кода и скопировать, разделить и изменить код, чтобы создать файлы настройки и запуска, описанные в следующих разделах.
Чтобы оценить параметры в развернутом режиме, код для оценки неразвернутого параметра может быть разделен на файл настройки для использования в неразвернутом режиме и файл запуска для использования в развернутом режиме. Файл настройки доступен следующим parameterEstimationSdoBattery_setup.m
и основными частями являются:
Определите параметры
Определите эксперименты
Подготовьтесь к развертыванию и сохраните
Параметры определены в parameterEstimationSdoBattery_setup.m
так же, как и сгенерированный код MATLAB, parameterEstimationSdoBattery.m
. Используйте sdo.getParameterFromModel
команда для создания объекта параметра, содержащего поля для значения параметров, минимального и максимального, и поле («Free»), указывающее, будет ли параметр настроен во время оценки.
В этом примере информация о параметрах также хранится в базе данных, в которой автомобили идентифицируются кодом, подобным псевдоидентификационному номеру транспортного средства (VIN). Производитель автомобиля может использовать это для мониторинга состояния батареи с течением времени. The 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
и основными частями являются:
Загрузка предварительно сконфигурированных объектов развертывания
Обновление экспериментов и параметров
Запустите оптимизацию
Обновление базы данных параметров
The parameterEstimationSdoBattery_run.m
нужна прагма, чтобы Simulink Compiler включил модель в скомпилированный код следующим образом:
Загрузите предварительно сконфигурированные объекты, которые были сохранены в конце parameterEstimationSdoBattery_setup.m
файл следующим образом:
The parameterEstimationSdoBattery_run.m
файл принимает два входных параметров:
dataFilename
имя файла данных для данных эксперимента
vin
идентификационный номер транспортного средства для значений параметров
Считайте данные из текстового файла с значениями (CSV), заданного dataFilename
. Используйте команду updateIOData, чтобы обновить развернутые эксперименты с новыми входными и выходными данными (данными о токе и напряжении для этой модели). Поскольку данные из файла 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). В диалоговом окне строения выберите Data Import/Export и найдите имя переменной в Signal
logging
коробка.
После вызова sdo.optimize
в основной функции parameterEstimationSdoBattery_run.m
, обновление базы данных VIN. Для каждого параметра, который оценивается, скопируйте CurrentValue
на PreviousValue
а затем используйте новую оценку параметра, чтобы обновить CurrentValue
. См. parameterEstimationSdoBattery_run.m
для получения дополнительной информации.
Используйте mcc
команда для компиляции parameterEstimationSdoBattery_run.m
функцию из командного окна MATLAB или командной строки DOS или UNIX. Для выполнения следующих действий необходимо установить MATLAB Runtime. Для получения дополнительной информации см. раздел Установка и настройка MATLAB Runtime (MATLAB Compiler).
Выполните оценку параметра в развернутом режиме.
В 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)