Разработка системы управления аккумуляторами (BMS)

Сложная система, предназначенная для управления работой литий-ионных аккумуляторов. Выводит данные о состоянии аккумуляторов и позволяет контролировать их работу. Обеспечивает безопасность и правильность их функционирования.
Система управления аккумуляторами (Battery Management System, BMS) – это электронная система для обеспечения корректной и безопасной работы аккумуляторов.

Аккумуляторы используются во многих электронных устройствах – от игрушек, смартфонов и бытовых приборов до электромобилей, систем жизнеобеспечения и энергоаккумулирующих систем. Соответственно, BMS может применяться во многих областях и иметь разный функционал.
Инфографика, демонстрирующая базовый функционал BMS - системы управления аккумуляторами
Базовый функционал BMS
В состав BMS входит электроника, управляемая микроконтроллерами, и встроенное ПО. BMS выполняет широкий спектр задач:

  • измеряет и контролирует силу тока и напряжение на входах/выходах;
  • мониторит критические параметры;
  • регулирует параметры среды;
  • хранит и рассчитывает данные о состоянии аккумуляторов, а также передает их пользователю или системе более высокого уровня.

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

  • уровень заряда (SoC);
  • степень исправности (SoH);
  • уровень оставшейся энергии в Дж (SoE);
  • уровень мощности на текущий момент в Вт (SoP).

От точности оценки этих характеристик во многом зависит надежность системы.

Запрос

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

Клиенту требовалось завершить разработку прошивки для системы управления аккумуляторами (BMS) и создать программное обеспечение для взаимодействия с системой.

Мы также должны были создать ПО для тестирования собранных модулей BMS перед отправкой покупателям.

Решение

BMS управляет работой литий-ионных аккумуляторов – LFP (LiFePO4) или NMC (LiNiMnCoO2).

Последовательно соединенные аккумуляторы составляют модуль (module). Один модуль состоит из 12 аккумуляторов и управляется контроллером.

Контроллер модуля измеряет напряжение и температуру в ячейках и передает эти данные на уровень управления. Здесь же происходит балансировка уровня заряда в ячейках.

Для выравнивания уровней заряда в модуле на каждом аккумуляторе установлен уравнительный резистор. Резисторы осуществляют пассивное выравнивание, сводя к минимуму разницу в уровне заряда аккумуляторов.
Схема, демонстрирующая архитектуру контроллера модуля в системе управления аккумуляторами (BMS) - KEDR Solutions
Архитектура контроллера модуля
24 модуля объединены в одну аккумуляторную цепь (string), полное напряжение в которой достигает почти 1000 вольт.

Контроллер цепи следит за работой 24 контроллеров модулей, или одной цепи.
Схема, демонстрирующая архитектуру контроллера аккумуляторной цепи, использованная в разработке BMS специалистами компании КЕДР Solutions
Архитектура контроллера аккумуляторной цепи
Печатная плата контроллера цепи выполняет следующие функции:

  • Управление шиной;
  • Связь с интерфейсом оператора;
  • Управление распределением электропитания;
  • Получение данных о напряжении и температуре с контроллеров модулей;
  • Получение данных о силе тока;
  • Вычисление SoC и SoH;
  • Выравнивание уровня заряда в ячейках;
  • Управление автоматическим выключателем;
  • Управление контакторами в модулях;
  • Управление извещениями;
  • Управление аварийной остановкой;
  • Управление скоростью вращения охлаждающих вентиляторов в модулях;
  • Вычисление предельного тока;
  • Управление светодиодами.

Для увеличения емкости и мощности системы можно соединить параллельно до 10 аккумуляторных цепей.

Мощность одной цепи составляет около 200 кВт. Соответственно, общая мощность системы может достигать 2 МВт.

BMS отслеживает напряжение, температуру и ток нагрузки в аккумуляторах, а также измеряет напряжение в аккумуляторных цепях и шинах.

На основе полученных измерений BMS высчитывает SoC, SoH и SoE. Для этого используется математическая модель, разработанная для данных аккумуляторов.

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

Разработка вспомогательных печатных плат

Наши инженеры разработали вспомогательные печатные платы для BMS.

Одна из плат была спроектирована для управления клапаном системы пожаротушения по команде контроллера модулей.

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

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

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

Приложение для сенсорного дисплея

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

С помощью приложения можно:

  • мониторить состояние и параметры аккумуляторов;
  • подключать/отключать блоки аккумуляторов;
  • отмечать извещения об ошибках как просмотренные и очищать их.

Все события, влияющие на состояние системы, записываются в специальный реестр. К ним относятся:

  • вход/выход пользователя;
  • подтверждение просмотра/очистка извещений;
  • включение/выключение аккумуляторных цепей;
  • подсоединение/отсоединение аккумуляторных цепей;
  • другие действия, меняющие состояние BMS.

Система управления аккумуляторами – это многоуровневая система. Для каждого уровня в приложении предусмотрен свой экран (страница), который отображает релевантную информацию: Домашний экран, Экран цепи и Экран модуля.
Схема с данными, которые отображаются на экране модуля в приложении, разработанном специалистами KEDR Solutions
Данные, отображающиеся на Экране модуля
Домашний экран показывает текущую конфигурацию BMS, общие данные и данные с контроллеров аккумуляторных цепей: статус, параметры и схему соединения.

Экран аккумуляторных цепей показывает ID цепи, ее серийный номер и текущие параметры.

Здесь отображаются все модули в составе цепи и связанная с ними информация: ID модулей, статус контакторов, температура модулей, напряжение и SoC.

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

Экран модулей отображает ID модуля, его серийный номер и текущие параметры.

Пользователь может получить информацию о напряжении каждого элемента, его температуре и SoC. Ячейки с самыми высокими или низкими показателями выделены цветом.

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

Экран извещений показывает все активные извещения, а также неактивные ошибки и сбои, еще не просмотренные пользователем. Персонал с достаточным уровнем доступа может: очищать список ошибок, отмечать извещения о сбоях как просмотренные и очищать список извещений.

Экран реестра извещений содержит все извещения, когда-либо сгенерированные системой.

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

Неавторизованный наблюдатель имеет статус Пользователя. Он может проверять все параметры BMS, отслеживать тенденции в извещениях, а также просматривать все предупреждения/ошибки/сбои.

Авторизованные пользователи со статусом Технический специалист могут управлять системой на Экране управления системой, видеть уведомления и очищать извещения об ошибках.

Авторизованные пользователи со статусом Администратора имеют наивысший уровень допуска. Они вправе изменять параметры системы, а также отмечать извещения о сбоях как просмотренные и очищать их.

Авторизованные пользователи (со статусом Технический специалист и Администратор) имеют доступ к Экрану управления, позволяющему контролировать работу BMS (включать/отключать и подсоединять/отсоединять аккумуляторные цепи).

Для BMS мы реализовали систему одноразовых паролей, которая позволяет получить одноразовый пароль для входа в систему и выполнения определенного действия.

Разработка сервера управления аккумуляторными цепями (Multi-String Manager)

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

Multi-String Manager отслеживает состояние цепей, а также получает от них телеметрию и извещения. В зависимости от типа извещения сервер может сообщить о проблеме пользователю, отключить неисправную цепь, выключить всю систему и т.д. Извещения активируются автоматически без участия пользователей.

Телеметрия включает в себя множество параметров:

  • напряжение в ячейках;
  • температура;
  • состояние датчиков;
  • напряжение в аккумуляторных батареях;
  • SoH;
  • время;
  • сила тока;
  • напряжение на шине;
  • ограничения на зарядку и разрядку;
  • состояние зарядки;
  • максимальное ограничение по SoC;
  • максимальное ограничение по SoH;
  • состояние датчиков и внутренних переключателей и др.

Сервер хранит всю информацию в базе данных и передает ее на приложение.

Когда пользователь взаимодействует с приложением, команды сначала идут на Multi-String Manager и только потом перенаправляются на контроллер цепи.

Доступ к серверу для получения данных и управления ими можно получить разными способами.

  • Контроллер с сенсорным экраном отображает состояние компонентов системы и все извещения в понятном графическом виде.
  • BMS может удаленно управляться внешней системой управления энергопотреблением по протоколу Modbus TCP/IP.
  • Удаленно подключиться к системе и просматривать ее параметры можно с помощью базы данных Redis.
  • Управлять сервером можно также с помощью протокола gRPC.

Сервер Multi-String Manager содержит конфигурационный файл, устанавливающий ограничения, в пределах которых параметры системы считаются нормальными. Здесь также учитываются общая мощность аккумуляторных цепей, емкость аккумуляторов и напряжение.

Обеспечение безопасности и шифрование BMS

Следуя пожеланиям заказчика относительно безопасности BMS, мы использовали шифрование по алгоритму Advanced Encryption Standard (AES) и цифровую подпись с использованием алгоритма RSA (Rivest–Shamir–Adleman).

Общую безопасность системы обеспечивают защищенные шины к ведомым платам, защищенная первоначальная прошивка и защищенные обновления прошивки. Мы также создали инструменты, необходимые для автоматической сборки и подготовки прошивки.

Интерфейс высокого напряжения

Интерфейс высокого напряжения измеряет напряжение и силу тока в шинах и распределяет 220 В переменного тока по системе. Интерфейс также позволяет управлять автоматическими выключателями и контакторами.

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

Мы разработали программу для тестирования модулей. Десктопное приложение для сенсорных экранов проверяет работу собранных модулей BMS перед их отправкой покупателю.

Система должна пройти следующие проверки:

  • получить серийный номер контроллера модуля;
  • просканировать QR-код и записать его значение как серийный номер модуля;
  • подтвердить работу светодиодных индикаторов;
  • проверить целостность аппаратного обеспечения;
  • подтвердить, что напряжение элементов не превышает заданный уровень;
  • получить данные с датчиков температуры;
  • получить данные с датчиков дыма;
  • проверить работу клапана (в случае возгорания клапан открывается и активируется система пожаротушения);
  • подтвердить способность заряжать ячейки;
  • вывести на экран результаты тестирования.

Результаты проверки выгружаются в отдельный JSON-файл. Параметры тестирования можно менять – например, для разных видов аккумуляторов и т.п.

Сервис обновления прошивки устройств

Мы разработали сервис обновления прошивок для контроллеров цепей, контроллеров модулей и интерфейса высокого напряжения.

Он позволяет удаленно обновлять прошивку на этих устройствах.

Сложности проекта и их решение

BMS представляет собой крупную и сложную структуру с множеством сообщающихся компонентов. Перед началом работы над проектом мы изучили принципы работы системы.

Разрабатывая прошивки, мы должны были учесть архитектуру аппаратного комплекса и требования заказчика.

BMS состоит из множества компонентов с различными интерфейсами связи между ними: Ethernet между сервером и контроллером цепи; RS-485 между контроллером цепи и контроллером модуля; I2C между контроллером модуля и вспомогательными платами.

Нам нужно было наладить мониторинг всех параметров, а также опрос контроллеров модулей, вспомогательных плат и датчиков (датчиков тока, датчиков напряжения в аккумуляторных цепях, датчиков напряжения в шинах).

Дополнительная сложность – реализовать возможность одновременно обновлять прошивки устройств. Для удаленного обновления прошивок на сервере Multi-String Manager запускается специальная утилита.

Еще одно требование касалось безопасности системы. В случае несанкционированного подключения к любому компоненту системы злоумышленники не должны понять структуру протокола данных и структуру данных внутри системы. Аналогичные требования выдвигались к защищенности прошивок.

Наконец, еще одним вызовом стала необходимость измерять параметры ячеек, модулей и цепей одновременно. Непростой была и задача по вычислению SoC, т.к. это сложный процесс, включающий в себя снятие характеристик аккумуляторов.
Выполненные работы

Использованные технологии
  • Программное обеспечение написано на C/C++.
  • Для разработки приложения использован фреймворк Qt и его инструменты: Qt Serial Port, Qt Virtual Keyboard, Qt Core 5 и Qt Network.
  • Мы использовали платформу MATLAB, чтобы построить математическую модель для оценки состояния аккумуляторов.
  • Приложение работает на Linux и может запускаться на Windows.
  • Для разработки программного обеспечения использована CLion IDE.
  • Для создания принципиальных схем и проектирования печатных плат использовался Altium Designer.
  • Для отладки использовались инструменты SEGGER J-Link.
  • Подключиться к серверу Multi-String Manager и управлять им можно по протоколам Modbus TCP/IP и gRPC.
  • Для подключения к системе извне и просмотра ее состояния используется база данных Redis.
  • Для BMS заказчик выбрал микроконтроллеры NXP MKL17Z256VFM4 и NXP MK66FN2M0VMD18.
  • Прошивка написана на C/C++.
  • Для измерения напряжения в аккумуляторах использованы мониторы состояния многоэлементных составных аккумуляторов Analog Devices LTC6811.
  • Для написания кода прошивки использовался набор инструментов NXP MCUXpresso.
  • Для вычисления SoC использована библиотека линейной алгебры для C++ Eigen.
  • Данные хранятся локально, в СУБД PostgreSQL.
  • Для защиты системы использованы алгоритмы шифрования AES и RSA.
  • Инструменты для автоматизации сборки и подготовки прошивок написаны на Python.
  • Для разработки прошивки использована FreeRTOS.

Итоги

Данная BMS является крупной системой, сопоставимой по емкости с небольшой гидроэлектростанцией.

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

Заказчик остался доволен результатом.
Проект постоянно развивается. Добавляются второстепенные функции, устраняются ошибки. Уже выпущены две версии системы, и сейчас мы работаем над следующей.

Максимальная мощность системы:
2 MВт
Тип аккумуляторов:
LFP или NMC
Максимальное число ячеек:
2880
Поддерживает удаленное обновление прошивок