7.2 Протокол Modbus
Communication protocols
Modbus protocol
Общая информация
Плата BMS Main 3 / BMS Main 2R реализует протокол 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 – сигнал «Battery cover»; бит 1 – сигнал «Charge connected»; бит 2 – сигнал «Power up/down request»; бит 3 – сигнал «Inhbit charging»; бит 4 – сигнал «Inhibit discharging»; бит 5 – сигнал «CH contactor feedback»; бит 6 – сигнал «DCH contactor feedback»; бит 7 – сигнал «Insulation status»; бит 8 – сигнал «Charge request»; бит 9 – сигнал «Precharge request»; бит 10 – сигнал «Discharge request»; бит 11 – сигнал «PCH contactor feedback»; бит 12 – сигнал «CH/DCH contactor feedback»; бит 13 – сигнал «Main contactor feedback»; бит 14 – сигнал «Interlock»; бит 15 – сигнал «Fuse 1». | U16 |
| 0x2001-0x2002 | 2 | Ток (сенсор 1, высокой диапазон), А | REAL32 |
| 0x2003-0x2004 | 2 | Температура 1, °C | REAL32 |
| 0x2005-0x2006 | 2 | Влажность, RH% | REAL32 |
| 0x2007-0x2008 | 2 | Регистр ошибок 1 (битовое поле): бит 0 — ошибка "Overcurrent"; бит 1 — ошибка "Undervoltage"; бит 2 — ошибка "Overvoltage"; бит 3 — ошибка "Low temperature (DCH)"; бит 4 — ошибка "High temperature (DCH)"; бит 5 — ошибка "Battery cover"; бит 6 — ошибка "High humidity"; бит 7 — ошибка "Water"; бит 8 — ошибка "Logic high temperature"; бит 9 — ошибка "Logic offline"; бит 10 — ошибка "Critical error"; бит 11 — ошибка "Crown error"; бит 12 — ошибка "Cell count error"; бит 13 — ошибка "HYG offline"; бит 14 — зарезервировано (установлено в 0); бит 15 — ошибка "Combilift offline"; бит 16 — ошибка "Short circuit"; бит 17 — ошибка "High contactor temperature"; бит 18 — ошибка "Logic count error"; бит 19 — ошибка "ADC error"; бит 20 — ошибка “Current sensor error”; бит 21 — ошибка “CH contactor cycles error”; бит 22 — ошибка “DCH contactor cycles error”; бит 23 — ошибка "Shunt offline"; бит 24 — ошибка “Shunt error”; бит 25 — зарезервировано (установлено в 0); бит 26 — ошибка “WDT reset”; бит 27 — ошибка "No temperature sensors"; бит 28 — ошибка "Temperature sensor shorted"; бит 29 — ошибка “Spirit offline”; биты 30-31 – не используются. | U32 |
| 0x2009-0x200A | 2 | Флаги состояния (битовое поле): бит 0 – сигнал «Low SOC»; бит 1 – сигнал «High charging current»; бит 2 – состояние контактора заряда «Charging» (0 – разомкнуто, 1 – замкнуто); бит 3 – сигнал «Allow charging»; бит 4 – сигнал «Charging current present» (детектируется ток заряда); бит 5 – состояние контактора разряда «Discharging» (0 – разомкнуто, 1 – замкнуто); бит 6 – сигнал «Discharging current present» (детектируется ток разряда); бит 7 – сигнал «Voltage too high for charging» (EV); бит 8 – сигнал «Heater»; бит 9 – сигнал «Cooler»; бит 10 – сигнал «Shutdown request (HYG/Spirit)»на отключение контактора разряда от погрузчика HYG/Spirit; бит 11 – сигнал «Init» об инициализации платы (во время инициализации калибруется датчик тока и сканируются платы BMS Logic); бит 12 – состояние «Precharging» контактора предзаряда; бит 13 – сигнал «Shutdown request (Combilift)» на отключение контактора разряда от погрузчика Combilift; бит 14 – сигнал «Cell analysis» о запущенном процессе анализа ячеек; бит 15 – сигнал «Balancing 1» на балансировку серии батареи №1; бит 16 – сигнал «Balancing 2» на балансировку серии батареи №2; бит 17 – состояние «Discharging (AUX)» дополнительного контактора разряда (0 – разомкнуто, 1 – замкнуто); бит 18 – подтверждение «Power down ACK» отключения питания; бит 19 – сигнал «Crown EWS» от погрузчика Crown; бит 20 – состояние главного контактора «Main contactor» (0 – разомкнут, 1 - замкнут); бит 21 – сигнал «Service reset» служебного сброса системы; бит 22 – состояние комбинированного контактора заряда/разряда «Charging/Discharging» (0 – разомкнуто, 1 – замкнуто); бит 23 – сигнал «Ready to charge»; бит 24 – сигнал «Ready to discharge»; бит 25 — сигнал «Power up»; бит 26 — сигнал «External 1»; бит 27 — сигнал «Heater (AUX)»; бит 28 — сигнал «External 2»; биты 29-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 — ошибка "Low temperature (CH)"; бит 1 — ошибка“High temperature (CH)”; бит 2 — зарезервировано (установлено в 0); бит 3 — зарезервировано (установлено в 0); бит 4 — ошибка“Unallowable charging”; бит 5 — ошибка“Stuck contactor”; бит 6 — ошибка “CH contactor feedback error”; бит 7 — ошибка “DCH contactor feedback error”; бит 8 — ошибка “Insulation fault”; бит 9 — ошибка “PCH contactor feedback error”; бит 10 — ошибка “CH/DCH contactor feedback error”; бит 11 — ошибка “Main contactor feedback error”; бит 12 — зарезервировано (установлено в 0); бит 13 — ошибка “General error”; бит 14* — ошибка “High voltage fault”; бит 15* — ошибка “Power switch error”; бит 16* — ошибка “HVIL error”; бит 17 — ошибка “Precharge error”; бит 18* — ошибка “Power fault”; бит 19 — ошибка "Current limit error"; бит 20 — ошибка “T-sensor count error”; бит 21 — ошибка "Battery voltage mismatch"; бит 22 — ошибка "Cell imbalance"; бит 23 — ошибка "Main X offline"; биты 24-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 – сигнал «Fuse 2»; бит 1 – сигнал «Fuse 3»; бит 2 – сигнал «Circuit breaker status»; бит 3 – сигнал «Balancing request»; бит 4 – сигнал «Close Main contactor»; бит 5 – сигнал «Close External 1»; бит 6 – сигнал «Close External 2»; бит 7-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 |
| 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 |
| 0x5116 | 1 | Программное управление сигналом "Close External 2" signal. Возможные значения: 0 – сбросить сигнал; 1 – установить сигнал; 2-65535 – использовать физическое состояние сигнала "Close External 2". | U16 |