Программирование ARM Daly BMS UART/485, протокол связи, версия V1.2 Sun, October 18 2026  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Daly BMS UART/485, протокол связи, версия V1.2 Печать
Добавил(а) microsin   

Данный документ описывает протокол обмена данными по интерфейсу UART/RS485 между ведущим устройством (хостом, Upper Computer) и контроллером батареи (BMS) производства компании Dongguan Daly Electronics Co., Ltd.

[История изменений версий]

№ п/п Описание Дата Версия Автор
1 Начальная версия 2019.06.11 V1.0  
2 Изменение распределения адресов 2020.11.8 V1.1  
3 Изменение количества разделов и ссылок 2020.12.22 V1.2  

[1. Физический уровень]

1.1. UART

1. Физический интерфейс UART
2. Скорость передачи (baud rate) 9600 бит/сек
3. Формат связи 9600, N, 8, 1
4. Активный уровень TXD (передача)
"0": < 0.5V
"1": OC (Open Circuit, разомкнутая цепь) (напряжение должно быть ниже 100V)
RXD (приём)
"0": < 0.5V
"1": > 3V (напряжение должно быть ниже 100V)

[2. Формат связи]

2.1. Базовая синхронизация. Все сообщения отправляются ведущим устройством (хостом); все ведомые устройства принимают сообщения и определяют, совпадает ли адрес ведомого. Только при совпадении адреса ведомого устройства разрешён возврат данных ведущему.

2.2. Распределение адресов

Модуль Адрес
Ведущий BMS (BMS master) 0x01
Bluetooth APP 0x80
GPRS 0x20
Ведуший мастер шины (компьютер) 0x40

2.3. Формат связи UART

2.3.1. Отправка с PC (ведущий компьютер, мастер шины)

Стартовый флаг Адрес PC Идентификатор данных (Data ID) Длина данных Содержимое данных Контрольная сумма (1 байт)
0xA5 (фиксированный) 0x40 (UPPER-ADD) См. раздел 3 8 байт (фиксированная)    

Примечание: UPPER-ADD — UPPER это сокращение от Upper Computer, что означает компьютер хоста; ADD — это сокращение от Address, что означает адрес. Таким образом, UPPER-ADD в целом означает "адрес компьютера/мастера шины". В протоколе UART для Daly BMS это поле используется для идентификации стороны, отправляющей данную команду.

2.3.2. Ответ ведомого на команду ведущего

Стартовый флаг Адрес PC Идентификатор данных (Data ID) Длина данных Содержимое данных Контрольная сумма (1 байт)
0xA5 (фиксированный) 0x01 (UPPER-ADD) См. раздел 3 8 байт (фиксированная)    

Примечания:

(1) Для каждого пакета определена фиксированная длина данных; невозможно считать два блока данных одновременно.
(2) Контрольная сумма вычисляется как сумма предыдущих данных, и берется только младший байт от этой суммы.

[3. Содержимое пакетов]

Сообщение данных Data ID UPPER-BMS* Примечание / Remark
SOC (State of Charge), состояние заряда, параметры общего напряжения и тока 0x90 Отправка Byte0~Byte7: зарезервировано
Приём Byte0~Byte1: Суммарное общее напряжение (в единицах 0.1V). Это значение, которое BMS вычисляет или накапливает. Чаще всего это сумма напряжений всех отдельных ячеек, которые BMS измерила на своих клеммах. Это то "идеальное" напряжение, которое должно быть на выходе батареи.
Byte2~Byte3: Собранное/измеренное общее напряжение (в единицах 0.1V). Это напряжение, которое BMS физически измеряет на главных силовых клеммах (B+ и B-). Оно может незначительно отличаться от расчетного из-за сопротивления проводов, клемм и погрешности датчиков.
Byte4~Byte5: Ток (смещение 30000, в единицах 0.1A)
Byte6~Byte7: SOC (в единицах 0.1%)
Максимальное и минимальное напряжение 0x91 Отправка Byte0~Byte7: зарезервировано
Приём Byte0~Byte1: Максимальное напряжение ячейки (mV)
Byte2: Номер ячейки с максимальным напряжением
Byte3~Byte4: Минимальное напряжение ячейки (mV)
Byte5: Номер ячейки с минимальным напряжением
Максимальная и минимальная температура 0x92 Отправка Byte0~Byte7: зарезервировано
Приём Byte0: Максимальное значение температуры (смещение 40, °C)
Byte1: Номер ячейки с максимальной температурой
Byte2: Минимальное значение температуры (смещение 40, °C)
Byte3: Номер ячейки с минимальной температурой
Состояние MOS-транзисторов зарядки и разрядки 0x93 Отправка Byte0~Byte7: зарезервировано
Приём Byte0: Состояние (0 — покой, 1 — зарядка, 2 — разрядка)
Byte1: Состояние зарядного MOS
Byte2: Состояние разрядного MOS
Byte3: Ресурс BMS (0~255 циклов)
Byte4~Byte7: Остаточная ёмкость (мА·ч)
Информация о состоянии 1
(Status information 1)
0x94 Отправка Byte0~Byte7: зарезервировано
Приём Byte0: Количество последовательно соединённых ячеек
Byte1: Количество датчиков температуры
Byte2: Состояние зарядного устройства (0 — отключено, 1 — подключено)
Byte3: Состояние нагрузки (0 — отключена, 1 — подключена)
Byte4:
Bit 0: состояние DI1
Bit 1: состояние DI2
Bit 2: состояние DI3
Bit 3: состояние DI4
Bit 4: состояние DO1
Bit 5: состояние DO2
Bit 6: состояние DO3
Bit 7: состояние DO4
Byte5~Byte7: зарезервировано
Напряжение ячеек 1~48
(Cell voltage 1~48)
0x95 Отправка Byte0~Byte7: зарезервировано
Приём Напряжение каждой отдельной ячейки занимает 2 байта; в соответствии с фактическим количеством ячеек максимум 96 байт, передаётся в 16 кадрах.
Byte0: номер кадра, начиная с 0; 0xFF — недействительно
Byte1~Byte6: напряжение ячейки (1 мВ)
Byte7: зарезервировано
Температура ячеек 1~16 0x96 Отправка Byte0~Byte7: зарезервировано
Приём Каждая температура занимает 1 байт; в соответствии с фактическим количеством датчиков температуры максимум 21 байт, передаётся в 3 кадрах.
Byte0: номер кадра, начиная с 0
Byte1~Byte7: температура ячейки (смещение 40, °C)
Состояние балансировки ячеек 1~48 0x97 Отправка Byte0~Byte7: зарезервировано
Приём 0: закрыто, 1: открыто
Bit0: состояние балансировки ячейки 1
...
Bit47: состояние балансировки ячейки 48
Bit48~Bit63: зарезервировано
Флаги ошибок батареи
(Battery failure status)
0x98 Отправка Byte0~Byte7: зарезервировано
Приём 0 -> нет ошибки, 1 -> ошибка
Byte0
Bit0: высокий уровень напряжения ячейки 1
Bit1: высокий уровень напряжения ячейки 2
Bit2: низкий уровень напряжения ячейки 1
Bit3: низкий уровень напряжения ячейки 2
Bit4: высокий уровень суммарного напряжения 1
Bit5: высокий уровень суммарного напряжения 2
Bit6: низкий уровень суммарного напряжения 1
Bit7: низкий уровень суммарного напряжения 2
Byte1
Bit0: высокая температура заряда, уровень 1
Bit1: высокая температура заряда, уровень 2
Bit2: низкая температура заряда, уровень 1
Bit3: низкая температура заряда, уровень 2
Bit4: высокая температура разряда, уровень 1
Bit5: высокая температура разряда, уровень 2
Bit6: низкая температура разряда, уровень 1
Bit7: низкая температура разряда, уровень 2
Byte2
Bit0: перегрузка по току заряда, уровень 1
Bit1: перегрузка по току заряда, уровень 2
Bit2: перегрузка по току разряда, уровень 1
Bit3: перегрузка по току разряда, уровень 2
Bit4: высокий уровень SOC 1
Bit5: высокий уровень SOC 2
Bit6: низкий уровень SOC 1
Bit7: низкий уровень SOC 2
Byte3
Bit0: разность напряжений, уровень 1
Bit1: разность напряжений, уровень 2
Bit2: разность температур, уровень 1
Bit3: разность температур, уровень 2
Bit4~Bit7: зарезервировано
Byte4
Bit0: высокая температура зарядного MOS, аварийный сигнал
Bit1: высокая температура разрядного MOS, аварийный сигнал
Bit2: ошибка датчика температуры зарядного MOS
Bit3: ошибка датчика температуры разрядного MOS
Bit4: ошибка залипания зарядного MOS
Bit5: ошибка залипания разрядного MOS
Bit6: ошибка обрыва цепи зарядного MOS
Bit7: ошибка обрыва цепи разрядного MOS
Byte5
Bit0: ошибка микросхемы сбора AFE (Analog Front End)
Bit1: пропадание сбора напряжения
Bit2: ошибка датчика температуры ячейки
Bit3: ошибка EEPROM
Bit4: ошибка RTC
Bit5: отказ предварительной зарядки
Bit6: отказ связи
Bit7: отказ внутренней связи
Byte6
Bit0: неисправность модуля тока
Bit1: неисправность определения суммарного напряжения
Bit2: неисправность защиты от короткого замыкания
Bit3: неисправность запрета зарядки при низком напряжении
Bit4~Bit7: зарезервировано
Byte7: код неисправности

Примечание (*): UPPER-BMS обозначает взаимодействие между компьютером (UPPER) и контроллером батареи (BMS).

[Ссылки]

1. Расширенный протокол взаимодействия по UART с BMS ф. Daly / Daly UART Communication Protocol (Extended).
2. MAX3485 12Mbps half-duplex, RS485/RS422 transceiver site:chipdip.ru.
3. dalybms.com: Download PC software.
4. Daly BMS: RUST project can read and write a Daly BMS module from the command line.
5. ESPHome Daly BMS Multi-Device Component.

 

Добавить комментарий


Защитный код
Обновить

Top of Page