6.2 Протокол Modbus
Communication protocols
Modbus protocol
Общая информация
Плата BMS Main 3 реализует протокол Modbus для настройки и чтения состояния АКБ и BMS. BMS является Modbus-сервером и отвечает на команды Modbus-клиента.
Взаимодействие с устройством осуществляется через шину RS-485 (Modbus RTU) или сеть Ethernet (Modbus TCP).
Параметры шины RS-485:
- частота, бит/с — 600, 1200, 2400, 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200;
- длина слова, бит — 8;
- четность — нет;
- адрес устройства (по умолчанию) — 32.
Параметры Ethernet:
- порт — 502.
Ниже приводятся описание Input и Holding регситров. В колонке «Тип параметра»:
- U8 – беззнаковое 8-разрядное число;
- U16 – беззнаковое 16-разрядное число;
- S16 – знаковое 16-разрядное число;
- U32 – беззнаковое 32-разрядное число.
- REAL32 — число с плавающей точкой одинарной точности (стандарт IEEE 754);
- U8[x] — массив беззнаковых 8-разрядных чисел длиной x;
- U16[x] — массив беззнаковых 16-разрядных чисел длиной x;
- REAL32[x] — массив чисел с плавающей точкой одинарной точности длиной x.
Порядок байт в словах – от младшего к старшему (little endian).
Регистры ввода
Регистр | Количество регистров | Содержимое | Тип параметра |
0x0000 | 1 | Аппаратная версия: byte 0 — минорная версия; byte 1 — мажорная версия. | U8[2] |
0x0001-0x0002 | 2 | Версия ВПО: byte 0 — версия патча; byte 1 — минорная версия; byte 2 — мажорная версия; byte 3 — не используется (установлен в 0). | U8[4] |
0x0003-0x0004 | 2 | Версия загрузчика (ubl): byte 0 — версия патча; byte 1 — минорная версия; byte 2 — мажорная версия; byte 3 — не используется (установлен в 0). | U8[4] |
Состояние батареи | |||
0x2000 | 1 | Дискретные входы 1 (битовое поле): бит 0 – сигнал «Открыта АКБ»; бит 1 – сигнал «Подключено ЗУ»; бит 2 – сигнал «Запрос на отключение питания»; бит 3 – сигнал «Запрет заряда»; бит 4 – сигнал «Запрет разряда»; бит 5 – сигнал «Обратная связь контактора заряда»; бит 6 – сигнал «Обратная связь контактора разряда»; бит 7 – сигнал «Статус контроля изоляции». бит 8 – сигнал «Запрос на заряд»; бит 9 – сигнал «Запрос на предзаряд»; бит 10 – сигнал «Запрос на разряд»; бит 11 – сигнал «Обратная связь контактора предзаряда»; бит 12 – сигнал «Обратная связь комбинированного контактора заряда/разряда»; бит 13 – сигнал «Обратная связь главного контактора»; бит 14 – сигнал целостности высоковольной цепи; бит 15 – сигнал состояния предохранителя 1. | U16 |
0x2001-0x2002 | 2 | Ток (сенсор 1, высокой диапазон), А | REAL32 |
0x2003-0x2004 | 2 | Температура 1, °C | REAL32 |
0x2005-0x2006 | 2 | Влажность, RH% | REAL32 |
0x2007-0x2008 | 2 | Регистр ошибок 1 (битовое поле): бит 0 – ошибка «Превышение тока»; бит 1 – ошибка «Низкое напряжение»; бит 2 – ошибка «Высокое напряжение»; бит 3 – ошибка «Низкая температура (разряд)»; бит 4 – ошибка «Высокая температура (разряд)»; бит 5 – ошибка «Открыта крышка АКБ»; бит 6 – ошибка «Повышенная влажность»; бит 7 – ошибка «Вода»; бит 8 – ошибка «Перегрев Logic»; бит 9 – ошибка «Потеря связи c Logic»; бит 10 – критическая ошибка; бит 11 – ошибка Crown; бит 12 – ошибка «Несоответствие кол-ва ячеек»; бит 13 – ошибка «Потеря связи с HYG»; бит 14 – флаг о необходимости квитировать записи в журнале ошибок; бит 15 – ошибка «Потеря связи с Combilift»; бит 16 – ошибка «Короткое замыкание»; бит 17 – ошибка «Перегрев контактора»; бит 18 – ошибка «Несоответствие кол-ва Logic»; бит 19 – ошибка АЦП; бит 20 – ошибка в цепи подключения датчика тока (обрыв или короткое замыкание); бит 21 – большая частота переключений контактора заряда; бит 22 – большая частота переключений контактора разряда; бит 23 – ошибка «Потеря связи с BMS Current Sensor»; бит 24 – внутренняя ошибка BMS Current Sensor; бит 25 – ошибка контрольной суммы настроек платы; бит 26 – флаг перезапуска платы по требованию WDT; бит 27 – ошибка «Нет датчиков температуры»; бит 28 – ошибка «КЗ датчика температуры»; бит 29 – ошибка «Потеря связи со Spirit»; биты 30-31 – не используются. | U32 |
0x2009-0x200A | 2 | Флаги состояния (битовое поле): бит 0 – сигнал «SOC ниже заданного уровня»; бит 1 – сигнал «Ток заряда выше заданного уровня»; бит 2 – состояние контактора заряда (0 – разомкнуто, 1 – замкнуто); бит 3 – сигнал «Разрешение ЗУ»; бит 4 – сигнал «Заряд АКБ» (детектируется ток заряда); бит 5 – состояние контактора разряда (0 – разомкнуто, 1 – замкнуто); бит 6 – сигнал «Разряд АКБ» (детектируется ток разряда); бит 7 – сигнал «Повышенное напряжение» (EВ); бит 8 – сигнал «Нагрев АКБ»; бит 9 – сигнал «Охлаждение АКБ»; бит 10 – сигнал на отключение контактора разряда от погрузчика HYG; бит 11 – сигнал об инициализации платы (во время инициализации калибруется датчик тока и сканируются платы BMS Logic); бит 12 – состояние контактора предзаряда; бит 13 – сигнал на отключение контактора разряда от погрузчика Combilift; бит 14 – сигнал о запущенном процессе анализа ячеек (Cell analysis); бит 15 – сигнал на балансировку серии батареи №1; бит 16 – сигнал на балансировку серии батареи №2; бит 17 – состояние дополнительного (AUX) контактора разряда (0 – разомкнуто, 1 – замкнуто); бит 18 – подтверждение отключения питания; бит 19 – сигнал EWS от погрузчика Crown; бит 20 – состояние главного контактора (0 – разомкнут, 1 - замкнут); бит 21 – сигнал служебного сброса системы; бит 22 – состояние комбинированного контактора заряда/разряда (0 – разомкнуто, 1 – замкнуто); бит 23 – сигнал «Готовность заряжаться»; бит 24 – сигнал «Готовность разряжаться»; бит 25 – сигнал включения платы "Power up"; бит 26 – сигнал “External 1”; биты 27-31 – не используются. | U32 |
0x200B | 1 | Состояние дискретных выходов (битовое поле): бит 0 — состояние выхода №1; бит 1 — состояние выхода №2; бит 2 — состояние выхода №3; бит 3 — состояние выхода №4; биты 4-15 — не используются. | U16 |
0x200C | 1 | Состояние силовых ключей (битовое поле): бит 0 — состояние силового ключа 1 (0 – открыт, 1 – закрыт); бит 1 — состояние силового ключа 2 (0 – открыт, 1 – закрыт); бит 2 — состояние силового ключа 3 (0 – открыт, 1 – закрыт); бит 3 — состояние силового ключа 4 (0 – открыт, 1 – закрыт); бит 4 — состояние силового ключа 5 (0 – открыт, 1 – закрыт); бит 5 — состояние силового ключа 6 (0 – открыт, 1 – закрыт); биты 6-15 — не используются. | U16 |
0x200E-0x200F | 2 | Регистр ошибок 2 (битовое поле): бит 0 – ошибка «Низкая температура (заряд)»; бит 1 – ошибка «Высокая температура (заряд)»; бит 2 – ошибка монтирования SD-карты; бит 3 – ошибка записи/чтения SD-карты; бит 4 – ошибка «Недопустимый заряд» (заряд батареи через контактор разряда); бит 5 – ошибка «Залипание контактора»; бит 6 – «Ошибка обр. связи контактора заряда»; бит 7 – «Ошибка обр. связи контактора разряда»; бит 8 – ошибка «Нарушение изоляции»; бит 9 – «Ошибка обр. связи контактора предзаряда»; бит 10 – «Ошибка обр. связи комбинированного контактора заряда/разряда»; бит 11 – «Ошибка обр. связи главного контактора»; бит 12 – не используются (set to 0); бит 13 – общая ошибка; бит 14 — ошибка высокого напряжения; бит 15 — ошибка силового ключа; бит 16 — ошибка проверки целостности высоковольтной цепи ; бит 17 — ошибка предзаряда; бит 18 — ошибка “Power fault”; бит 19 — ошибка ограничения тока; биты 20-31 — не используются. | U32 |
0x2010 | 1 | Адрес устройства BMS Logic, чьи параметры отображаются в регистрах 0x2011-0x20C9 | U16 |
0x2011 | 1 | Состояние BMS Logic (битовое поле): бит 0 — устройство обнаружено; бит 1 — устройство онлайн; бит 2 — устройство готово к работе; бит 3 — данные с устройства актуальны; бит 4 — датчик температуры №1 обнаружен; бит 5 — датчик температуры №2 обнаружен; бит 6 — датчик температуры №1 закорочен; бит 7 — датчик температуры №2 закорочен; биты 8-15 — не используются. | U16 |
0x2012-0x2013 | 2 | Температура BMS Logic, °C | REAL32 |
0x2014-0x2015 | 2 | Флаги балансировки ячеек (битовое поле): бит i —балансировочный резистор подключен к i-вой ячейке. | U32 |
0x2016-0x2029 | 20 | Массив состояний ячеек. Каждый элемент массива соответствует ячейке и является битовым полем: бит 0 — ячейка подключена; бит 1 — температурный датчик подключен; бит 2 — к ячейке следует подключить балансировочный резистор; бит 3 — балансировочный резистор подключен к ячейке; бит 4 — температурный датчик закорочен; бит 5 — провода подключены к ячейке; биты 6-15 — не используются. | U16[20] |
0x202A-0x2051 | 40 | Массив напряжений ячеек (В) | REAL32[20] |
0x2052-0x2079 | 40 | Массив температур ячеек (°C) | REAL32[20] |
0x207A-0x20A1 | 40 | Массив степеней заряда ячеек (SOC) (%) | REAL32[20] |
0x20A2-0x20C9 | 40 | Массив сопротивлений ячеек (Ом) | REAL32[20] |
0x20CA | 1 | Версия платы BMS Logic: байт 0 – минорная версия; байт 1 – мажорная версия. | U8[2] |
0x20CB-0x20CC | 2 | Версия ВПО BMS Logic: байт 0 – версия патча; байт 1 – минорная версия; байт 2 – мажорная версия; байт 3 – не используется (установлен в 0). | U8[4] |
0x20CD | 1 | Количество подключенных ячеек к BMS Logic | U16 |
0x20CE | 1 | Серийный номер BMS Logic | U16 |
0x20F0-0x20F1 | 2 | Температура 2, °C | REAL32 |
0x20F2-0x20F3 | 2 | Напряжение питания, В | REAL32 |
0x20F4 | 1 | Дискретные входы 2 (битовое поле): бит 0 – состояние предохранителя 2; бит 1 – состояние предохранителя 3; бит 2 – состояние защитного прерывателя цепи; биты 3-15 – не используются. | U16 |
0x2100-0x2101 | 2 | Степень заряда АКБ (SOC), % | REAL32 |
0x2102 | 1 | Количество устройств BMS Logic | U16 |
0x2103 | 1 | Количество ячеек | U16 |
0x2104-0x2105 | 2 | Напряжение АКБ, В | REAL32 |
0x2106-0x2107 | 2 | Сопротивление АКБ, Ом | REAL32 |
0x2108-0x2109 | 2 | Эффективная ёмкость АКБ, А×ч | REAL32 |
0x210A-0x210B | 2 | Эффективность балансировки ячеек, % | REAL32 |
0x210C-0x210D | 2 | Степень работоспособности батареи (SOH), % | REAL32 |
0x210E-0x210F | 2 | Глубина разряда батареи, А×ч | REAL32 |
0x2110-0x2111 | 2 | Минимальная температура среди устройств BMS Logic | REAL32 |
0x2112 | 1 | Адрес устройства Logic, имеющего минимальную температуру | U16 |
0x2113-0x2114 | 2 | Максимальная температура среди устройств BMS Logic | REAL32 |
0x2115 | 1 | Адрес устройства Logic, имеющего максимальную температуру | U16 |
0x2116-0x2117 | 2 | Скорость обмена с устройствами BMS Logic, ком./с | REAL32 |
0x2118-0x2119 | 2 | Минимальная температура ячейки | REAL32 |
0x211A | 1 | Адрес устройства Logic, к которому подключена ячейка с минимальной температурой | U16 |
0x211B | 1 | Номер ячейки с минимальной температурой | U16 |
0x211C-0x211D | 2 | Максимальная температура ячейки | REAL32 |
0x211E | 1 | Адрес устройства Logic, к которому подключена ячейка с максимальной температурой | U16 |
0x211F | 1 | Номер ячейки с максимальной температурой | U16 |
0x2120-0x2121 | 2 | Минимальное напряжение среди ячеек | REAL32 |
0x2122 | 1 | Адрес устройства Logic, к которому подключена ячейка с минимальным напряжением | U16 |
0x2123 | 1 | Номер ячейки с минимальным напряжением | U16 |
0x2124-0x2125 | 2 | Максимальное напряжение среди ячеек | REAL32 |
0x2126 | 1 | Адрес устройства Logic, к которому подключена ячейка с максимальным напряжением | U16 |
0x2127 | 1 | Номер ячейки с максимальным напряжением | U16 |
0x2128 | 1 | Флаг наличия ошибки: 0 — нет ошибок; 1 — имеются ошибки. | U16 |
0x2130-0x2131 | 2 | Энергия, полученная от зарядного устройства, Вт×ч | REAL32 |
0x2132-0x2133 | 2 | Энергия, потреблённая нагрузкой, Вт×ч | REAL32 |
0x2134-0x2135 | 2 | Энергия, рассеянная на балансировочных резисторах, Вт×ч | REAL32 |
0x217B-0x217C | 2 | Заряд, полученный батареей от зарядного устройства, А×ч | REAL32 |
0x217D-0x217E | 2 | Заряд, переданный нагрузке от батареи, А×ч | REAL32 |
0x21B8 | 1 | Флаг индикации балансировки ячеек | U16 |
0x21CA-0x21CB | 2 | Среднее напряжение ячеек в батарее, В | REAL32 |
0x2400-0x2401 | 2 | Ток (сенсор 1, малый диапазон), A | REAL32 |
0x2402-0x2403 | 2 | Итоговый ток АКБ, A | REAL32 |
0x2410 | 1 | Состояние батареи: 0 – Неизвестно; 1 – Charing ON – заряд; 2 – Charging OFF – нет заряда; 3 – Relaxed (after charging) – батарея в состоянии релаксации после заряда; 4 – Discharging ON – разряд; 5 – Discharging OFF – нет разряда; 6 – Relaxed (after discharging) – батарея в состоянии релаксации после разряда. | U16 |
0x2411-0x2412 | 2 | Время нахождения в текущем состоянии (см. 0x2410), сек | U32 |
Регистры хранения
Register address | Количество регистров | Содержимое | Тип параметра |
0x4000 | 1 | Адрес устройства BMS Logic, чьи параметры должны отображаться в регистрах 0x2011-0x20C9 | U16 |
0x4100-0x4101 | 2 | Битовое поле квитирования ошибок. Каждый бит квитирует соответствующую ошибку (см. Регистр ошибок 1 по адресам 0x2007-0x2008) | U32 |
0x5100 | 1 | Программное управление сигналом "Battery cover". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Battery cover". | U16 |
0x5100 | 1 | Программное управление сигналом "Battery cover". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Battery coВer". | U16 |
0x5101 | 1 | Программное управление сигналом "Charger connected". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Charger connected". | U16 |
0x5102 | 1 | Программное управление сигналом "Power down request". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Power down request". | U16 |
0x5103 | 1 | Программное управление сигналом "Inhibit charging". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Inhibit charging". | U16 |
0x5104 | 1 | Программное управление сигналом "Inhibit discharging". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Inhibit discharging". | U16 |
0x5105 | 1 | Программное управление сигналом "Charging contactor feedback". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Charging contactor feedback". | U16 |
0x5106 | 1 | Программное управление сигналом "Discharging contactor feedback". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Discharging contactor feedback". | U16 |
0x5107 | 1 | Программное управление сигналом "Insulation status". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Insulation status". | U16 |
0x5108 | 1 | Программное управление сигналом "Charge request". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Charge request". | U16 |
0x5109 | 1 | Программное управление сигналом "Precharge request". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Precharge request". | U16 |
0x510A | 1 | Программное управление сигналом "Discharge request". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Discharge request". | U16 |
0x510B | 1 | Программное управление сигналом "PCH contactor feedback". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "PCH contactor feedback". | U16 |
0x510C | 1 | Программное управление сигналом "CH/DCH contactor feedback". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "CH/DCH contactor feedback". | U16 |
0x510D | 1 | Программное управление сигналом "Main contactor feedback". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Main contactor feedback". | U16 |
0x510E | 1 | Программное управление сигналом "Interlock". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Interlock". | U16 |
0x510F | 1 | Программное управление сигналом "Fuse 1". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Fuse 1". | U16 |
0x5110 | 1 | Программное управление сигналом "Fuse 2". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Fuse 2". | U16 |
0x5111 | 1 | Программное управление сигналом "Fuse 3". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Fuse 3". | U16 |
0x5112 | 1 | Программное управление сигналом "Circuit breaker status". Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Circuit breaker status". | U16 |
0x5113 | 1 | Программное управление сигналом "Balancing request" signal. Allowable values: Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Balancing request". | U16 |
0x5114 | 1 | Программное управление сигналом "Close Main contactor" signal. Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Close Main contactor". | U16 |
0x5115 | 1 | Программное управление сигналом "Close External 1" signal. Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Close External 1". | U16 |