В этом примере показано, как контролировать условие батареи электромобиля в поле, с развернутой версией оценки параметра 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, сгенерированного от Средства оценки Параметра. Скопируйте, разделите и измените сгенерированный код, чтобы сделать настройку и петлять, как продемонстрировано в следующем разделе.
Сначала сгенерируйте код MATLAB, чтобы оценить и в неразвернутом режиме. Используйте следующие команды, чтобы загрузить предварительно сконфигурированный сеанс оценки:
load sdoBattery_spesession_forDeployment
spetool(SDOSessionData)
Этот шаг загружает и строит эксперимент с измеренным напряжением и текущими данными и конфигурирует Средство оценки Параметра, чтобы оценить и .
Перейдите к кнопке 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)