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

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

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

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

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

Управление батареей

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

openExample('stateflow/BatteryManagementExample')
sf_battery_management

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

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

The battery management model.

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

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

System Controller design.

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

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

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

Inside the voltage chart.

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

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

The simulation target pane of the configuration parameters.

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

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

Custom C code that estimates the battery state of charge.

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

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

Stateflow debouncer logic.

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

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

Stateflow control logic chart.

График представляет 5 возможных режимов для пределов степени на батарее.

  1. Режим эффективности: Позвольте мощную ничью, когда заряд батареи будет высок.

  2. Режим Средства сохранения батареи: Ограничьте передаваемую мощность на батарее для КПД, когда заряд будет низким.

  3. Off: не позволяйте Передаваемую мощность, когда батарея будет в пределах состояния заряда.

  4. Быстрый Заряд: Быстро зарядите батарею, когда заряд будет низким.

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

Симулируйте Используя панель инструментальной панели

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

Dashboard panel to simulate voltage, current, and temperature.

Генерация кода

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

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

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

The custom code pane of the configuration parameters.

Ссылки

[1] Ramadass, P., Б. Харан, Р. Э. Вайт и Б. Н. Попов. “Математическое моделирование способности исчезает Литий-ионных ячеек”. Журнал Источников питания. 123 (2003), стр 230–240.

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

Похожие темы