В этом примере показано, как контролировать условие батареи электромобиля в поле, с развернутой версией оценки параметра Simulink® Design Optimization™, вместе с Simulink Compiler™.
Батареи в электромобилях являются дорогими, чтобы заменить и должны быть проверены и обеспечены тщательно, чтобы гарантировать, что они функционируют хорошо в течение их намеченного времени жизни. В этом примере электромобиль ездится на работу и назад на ежедневной дороге до работы. Дома, автомобиль включается к умному зарядному устройству, которое контролирует и ток и напряжение батареи. Зарядное устройство анализирует данные о батарее, чтобы оценить параметры батареи, с помощью развернутой версии оценки параметра Simulink Design Optimization, вместе с Simulink Compiler. Зарядное устройство передает эти параметры к автопроизводителю посредством связи Интернета вещей (IoT), так, чтобы производитель мог контролировать здоровье батареи в зависимости от времени.
Этот пример оценивает параметры простой модели аккумулятора, sdoBattery
. Вход к sdoBattery
текущая батарея, и выход модели является напряжением клеммы батареи, которое вычисляется из состояния заряда батареи.
Модель батареи основана на уравнении:
где:
напряжение клеммы батареи в Вольтах.
батарея постоянное напряжение в Вольтах.
сопротивление поляризации батареи в Омах.
максимальная емкость батареи в Ампер-часах. начальное состояние батареи заряда в Ампер-часах.
состояние заряда батареи, с 1 полностью заряжаемый и 0 разряженных. Состояние заряда батареи вычисляется из интеграла батареи, текущей с положительным текущим выбросом указания и отрицательной текущей зарядкой указания.
падение напряжения при зарядке, описанный как часть батареи постоянное напряжение.
Используйте следующую команду, чтобы открыть модель.
open_system('sdoBattery')
Следующие характеристики батареи известны:
Напряжение, 400 В
Коэффициент потерь, = 0.012
Сопротивление, 0,32 Ома.
как известно, 250 ампер-часов (100 кВт·ч), когда батарея является новой. Как возрасты батареи, как ожидают, уменьшится, и это проверено, чтобы отследить рабочее состояние батареи. Начальное состояние заряда и новая емкость батареи должен быть оценен.
Существует два основных шага, чтобы запустить оценку параметра развернутый режим:
Сделайте файл настройки, чтобы настроить объекты оценки параметра для использования в развернутом режиме
Сделайте файл запуска, который является функцией MATLAB для оценки параметра, которая может быть скомпилирована и запущена в развернутом режиме
Рекомендуется создать настройку и петлять начиная с кода MATLAB, сгенерированного от Parameter Estimator. Скопируйте, разделите и измените сгенерированный код, чтобы сделать настройку и петлять, как продемонстрировано в следующем разделе.
Сначала сгенерируйте код MATLAB, чтобы оценить и в неразвернутом режиме. Используйте следующие команды, чтобы загрузить предварительно сконфигурированный сеанс оценки:
load sdoBattery_spesession_forDeployment
spetool(SDOSessionData)
Этот шаг загружает и строит эксперимент с измеренным напряжением и текущими данными и конфигурирует Parameter Estimator, чтобы оценить и .
Перейдите к кнопке Estimate в панели инструментов и из выпадающего списка, выберите Generate MATLAB Function (см., Генерируют код MATLAB для проблем Оценки Параметра (графический интерфейс пользователя)). Этот шаг генерирует функцию MATLAB, которая добавляется к редактору MATLAB и MAT-файлу parameterEstimation_sdoBattery_Data.mat
. Сгенерированный код доступен для вас в файле parameterEstimationSdoBattery.m
. Можно использовать сгенерированный код, чтобы оценить параметры в неразвернутом режиме.
Этому рекомендуют запуститься с этого сгенерированного кода и копии, разделяют и изменяет код, чтобы создать настройку и петлять описанное в следующих разделах.
Чтобы оценить параметры в развернутом режиме, код для неразвернутой оценки параметра может быть разделен в файл настройки, чтобы использовать в неразвернутом режиме и файле запуска, чтобы использовать в развернутом режиме. Файл настройки доступен как parameterEstimationSdoBattery_setup.m
и основные части:
Задайте параметры
Задайте эксперименты
Подготовьтесь к развертыванию и сохраните
Параметры заданы в parameterEstimationSdoBattery_setup.m
таким же образом как сгенерированный код MATLAB, parameterEstimationSdoBattery.m
. Используйте sdo.getParameterFromModel
команда, чтобы создать объект параметра, содержа поля для значения параметров, минимума и максимума и поля ("Свободное") указание, будет ли параметр настроен во время оценки.
В этом примере информация параметра также хранится в базе данных, в которой автомобили идентифицированы кодом, сродни псевдо идентификационному номеру транспортного средства (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 Compiler включал модель в скомпилированный код можно следующим образом:
Загрузите предварительно сконфигурированные объекты, которые были сохранены в конце parameterEstimationSdoBattery_setup.m
файл можно следующим образом:
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)