|
Данный документ описывает протокол обмена данными по интерфейсу 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. |