exponenta event banner

Модель управления батареей с пользовательским кодом

С помощью Stateflow ® можно интегрировать пользовательский код C в диаграммы. Использование пользовательского кода C в диаграмме Stateflow позволяет:

  • Повторно используйте уже закодированные алгоритмы.

  • Используйте код C для низкоуровневых аппаратных операций, которые может быть трудно реализовать с помощью Stateflow.

В этом примере показано, как использовать пользовательский код C с помощью Stateflow для моделирования системы, которая управляет процентом заряда батареи, также известным как состояние заряда (SOC).

Управление батареями

Чтобы открыть модель, введите в командной строке:

openExample('stateflow/BatteryManagementExample')
sf_battery_management

Эта модель представляет несколько компонентов системы управления батареей. Эта система предназначена для реализации на контроллере для устройств с питанием от аккумулятора, таких как транспортное средство с питанием от аккумулятора или сотовый телефон. Целью системы управления батареей является ограничение требований к питанию батареи и обеспечение того, чтобы SOC не становился слишком высоким или слишком низким. SOC, который является слишком высоким или слишком низким, будет вредным для здоровья батареи. Кроме того, модель предназначена для ограничения разрядки батареи, когда заряд низок, что обеспечивает компромисс между производительностью и сроком службы батареи.

Модель управления аккумулятором позволяет достичь этих целей с помощью трех различных диаграмм.

The battery management model.

Диаграмма Sensor Reader w/ Fault Detection считывает значения датчиков из батарейного блока и выдает сообщения, когда датчики находятся в неисправном состоянии. Диаграмма Battery State Estimation использует показания датчика для оценки SOC батареи. Диаграмма Battery Power Limit Control сохраняет аккумулятор, защищает работоспособность аккумулятора и удерживает SOC от любой крайности. Диаграмма выполняет эти задачи, устанавливая ограничения по мощности для контроллера.

С помощью этой модели можно генерировать код и развертывать его на встроенном контроллере вместе с другим управляющим кодом, который может потребоваться системе.

System Controller design.

Моделирование связи с аппаратным обеспечением

При использовании модели для моделирования панель Пульт управления (Dashboard) позволяет управлять показаниями датчиков для системных входов. Если вызовы на монитор батареи истекли по тайм-ауту, функция возвращает код ошибки -9999.

Два файла кода C включены в Sensor Reader w/ Fault Detection: batteryMonitorDriver.h и batteryMonitorDriver.c. Эти два файла представляют код драйвера устройства, который будет использоваться для получения данных датчика из системы, включая напряжение батареи, ток и температуру, и используются для генерации кода. См. раздел Создание кода.

Inside the voltage chart.

Диаграмма Stateflow может также обрабатывать сигналы ошибок, возвращаемые датчиками. В случае ошибки датчика, SensorFaultDetection блок-схема содержит последнее известное действительное считывание датчика до тех пор, пока код ошибки не будет принят в течение определенного периода времени. После выполнения этого порогового значения SensorFaultDetection посылает сообщение о неисправности и предполагает, что оно будет обработано другими управляющими компонентами контроллера.

Чтобы смоделировать модель с помощью кода драйвера, необходимо включить файл заголовка и указать исходный файл на панели Цель моделирования (Simulation Target) в окне Параметры конфигурации (Configuration Parameters), а также выбрать опцию Импортировать пользовательский код (Import custom code). Сведения о параметре «Импорт пользовательского кода» см. в разделе Импорт пользовательского кода (Simulink).

The simulation target pane of the configuration parameters.

Оценка состояния заряда батареи путем повторного использования пользовательского кода

Для оценки состояния заряда батареи модель использует пользовательский алгоритм кода C. Включенный файл estimateSOC.c содержит следующий код:

Custom C code that estimates the battery state of charge.

С помощью этого алгоритма можно легко вызвать функцию кода C, а не повторно реализовать ее с помощью диаграмм Stateflow.

Для учета чувствительности шума и изменения тока в estimateSOC алгоритм, логика Stateflow используется для реализации алгоритма отладки. Эта логика упрощает процент SOC в 5 диапазонов: MAX, HIGH, NORMAL, LOW и MIN. Эти диапазоны предотвращают быстрые колебания между различными управляющими состояниями. Переходы выхода из дочерних состояний переходят к краю родительского состояния. При выполнении этих переходов Stateflow возвращает переход родительского состояния по умолчанию.

Stateflow debouncer logic.

Логика управления состоянием заряда устройства

Эту логику управления проще разработать с помощью диаграммы Stateflow, а не с помощью пользовательского кода. Эта диаграмма реализует ограничение мощности батареи на основе расчетного состояния батареи.

Stateflow control logic chart.

На диаграмме представлены 5 возможных режимов ограничения мощности батареи.

  1. Режим производительности: Разрешите высокую мощность при высокой зарядке батареи.

  2. Режим защиты аккумулятора: Ограничение потребляемой мощности батареи для повышения эффективности при низкой зарядке.

  3. Off (Выкл.): Не разрешать подачу питания, когда аккумулятор находится в предельном состоянии заряда.

  4. Быстрая зарядка: быстрая зарядка батареи при низкой зарядке.

  5. Медленный заряд: медленно заряжайте батарею, когда заряд велик для здоровья батареи.

Моделирование с помощью панели пульта управления

Чтобы проверить, работает ли модель так, как ожидалось, можно с помощью панели пульта управления смоделировать показания напряжения, тока и температуры. Переключатели позволяют моделировать ошибку датчика для проверки логики обнаружения неисправностей. Блоки панели мониторинга датчика и графика привязаны к активности диаграмм потока состояний для визуализации внутренних состояний и данных. Панель пульта управления можно перемещать и сворачивать во время навигации по модели. Дополнительные сведения о блоках панели управления см. в разделе Моделирование управления с помощью интерактивных дисплеев (Simulink).

Dashboard panel to simulate voltage, current, and temperature.

Создание кода

входы в состояние Sensor Reader w/ Fault Detection снабжаются двумя файлами кода C: batteryMonitorDriver.h и batteryMonitorDriver.c. Эти два файла представляют код драйвера устройства, который будет использоваться для получения данных датчика из системы, включая напряжение батареи, ток и температуру.

Чтобы использовать эту модель для генерации кода, код драйвера должен взаимодействовать с внешним оборудованием. Чтобы включить эту функцию, переход варианта с использованием управляющей переменной CODEGEN_FLAG позволяет диаграмме Stateflow вызывать код C непосредственно при генерации кода и моделировать значение датчика с шумом. В обозревателе моделей откройте базовую рабочую область и задайте значение CODEGEN_FLAG как true. Дополнительные сведения о исполнениях Stateflow и переходах исполнений см. в разделе Создание кода с использованием переходов исполнений.

Чтобы скомпилировать созданный код с кодом драйвера, необходимо включить файл заголовка и указать исходный файл на панели Пользовательский код (Custom Code) параметров конфигурации.

The custom code pane of the configuration parameters.

Ссылки

[1] Рамадасс, П., Б. Харан, Р. Е. Уайт и Б. Н. Попов. «Математическое моделирование затухания емкости Li-ионных клеток». Журнал источников питания. 123 (2003), стр 230–240.

[2] Нин, Г., Б. Харан и Б. Н. Попов. «Исследование затухания емкости литий-ионных батарей, циркулировавших при высоких скоростях разряда». Журнал источников питания. 117 (2003), стр 160–169.

Связанные темы