6.2 Протокол Modbus

Редактировал(а) Admin 2025/03/20 12:16

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).

Регистры ввода

РегистрКоличество регистровСодержимоеТип параметра
0x00001

Аппаратная версия:

byte 0 — минорная версия;

byte 1 — мажорная версия.

U8[2]
0x0001-0x00022

Версия ВПО:

byte 0 — версия патча;

byte 1 — минорная версия;

byte 2 — мажорная версия;

byte 3 — не используется (установлен в 0).

U8[4]
0x0003-0x00042

Версия загрузчика (ubl):

byte 0 — версия патча;

byte 1 — минорная версия;

byte 2 — мажорная версия;

byte 3 — не используется (установлен в 0).

U8[4]
Состояние батареи
0x20001

Дискретные входы 1 (битовое поле):

бит 0 – сигнал «Открыта АКБ»;

бит 1 – сигнал «Подключено ЗУ»;

бит 2 – сигнал «Запрос на отключение питания»;

бит 3 – сигнал «Запрет заряда»;

бит 4 – сигнал «Запрет разряда»;

бит 5 – сигнал «Обратная связь контактора заряда»;

бит 6 – сигнал «Обратная связь контактора разряда»;

бит 7 – сигнал «Статус контроля изоляции».

бит 8 – сигнал «Запрос на заряд»;

бит 9 – сигнал «Запрос на предзаряд»;

бит 10 – сигнал «Запрос на разряд»;

бит 11 – сигнал «Обратная связь контактора предзаряда»;

бит 12 – сигнал «Обратная связь комбинированного контактора заряда/разряда»;

бит 13 – сигнал «Обратная связь главного контактора»;

бит 14 – сигнал целостности высоковольной цепи;

бит 15 – сигнал состояния предохранителя 1.

U16
0x2001-0x20022Ток (сенсор 1, высокой диапазон), АREAL32
0x2003-0x20042Температура 1, °CREAL32
0x2005-0x20062Влажность, RH%REAL32
0x2007-0x20082

Регистр ошибок 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-0x200A2

Флаги состояния (битовое поле):

бит 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
0x200B1

Состояние дискретных выходов (битовое поле):

бит 0 — состояние выхода №1;

бит 1 — состояние выхода №2;

бит 2 — состояние выхода №3;

бит 3 — состояние выхода №4;

биты 4-15 — не используются.

U16
0x200C1

Состояние силовых ключей (битовое поле):

бит 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-0x200F2

Регистр ошибок 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
0x20101Адрес устройства BMS Logic, чьи параметры отображаются в регистрах 0x2011-0x20C9U16
0x20111

Состояние BMS Logic (битовое поле):

бит 0 — устройство обнаружено;

бит 1 — устройство онлайн;

бит 2 — устройство готово к работе;

бит 3 — данные с устройства актуальны;

бит 4 — датчик температуры №1 обнаружен;

бит 5 — датчик температуры №2 обнаружен;

бит 6 — датчик температуры №1 закорочен;

бит 7 — датчик температуры №2 закорочен;

биты 8-15 — не используются.

U16
0x2012-0x20132Температура BMS Logic, °CREAL32
0x2014-0x20152

Флаги балансировки ячеек (битовое поле):

бит i —балансировочный резистор подключен к i-вой ячейке.

U32
0x2016-0x202920

Массив состояний ячеек. Каждый элемент массива соответствует ячейке и является битовым полем:

бит 0 — ячейка подключена;

бит 1 — температурный датчик подключен;

бит 2 — к ячейке следует подключить балансировочный резистор;

бит 3 — балансировочный резистор подключен к ячейке;

бит 4 — температурный датчик закорочен;

бит 5 — провода подключены к ячейке;

биты 6-15 — не используются.

U16[20]
0x202A-0x205140Массив напряжений ячеек (В)REAL32[20]
0x2052-0x207940Массив температур ячеек (°C)REAL32[20]
0x207A-0x20A140Массив степеней заряда ячеек (SOC) (%)REAL32[20]
0x20A2-0x20C940Массив сопротивлений ячеек (Ом)REAL32[20]
0x20CA1

Версия платы BMS Logic:

байт 0 – минорная версия;

байт 1 – мажорная версия.

U8[2]
0x20CB-0x20CC2

Версия ВПО BMS Logic:

байт 0 – версия патча;

байт 1 – минорная версия;

байт 2 – мажорная версия;

байт 3 – не используется (установлен в 0).

U8[4]
0x20CD1Количество подключенных ячеек к BMS LogicU16
0x20CE1Серийный номер BMS LogicU16
0x20F0-0x20F12Температура 2, °CREAL32
0x20F2-0x20F32Напряжение питания, ВREAL32
0x20F41

Дискретные входы 2 (битовое поле):

бит 0 – состояние предохранителя 2;

бит 1 – состояние предохранителя 3;

бит 2 – состояние защитного прерывателя цепи;

биты 3-15 – не используются.

U16
0x2100-0x21012Степень заряда АКБ (SOC), %REAL32
0x21021Количество устройств BMS LogicU16
0x21031Количество ячеекU16
0x2104-0x21052Напряжение АКБ, ВREAL32
0x2106-0x21072Сопротивление АКБ, ОмREAL32
0x2108-0x21092Эффективная ёмкость АКБ, А×чREAL32
0x210A-0x210B2Эффективность балансировки ячеек, %REAL32
0x210C-0x210D2Степень работоспособности батареи (SOH), %REAL32
0x210E-0x210F2Глубина разряда батареи, А×чREAL32
0x2110-0x21112Минимальная температура среди устройств BMS LogicREAL32
0x21121Адрес устройства Logic, имеющего минимальную температуруU16
0x2113-0x21142Максимальная температура среди устройств BMS LogicREAL32
0x21151Адрес устройства Logic, имеющего максимальную температуруU16
0x2116-0x21172Скорость обмена с устройствами BMS Logic, ком./сREAL32
0x2118-0x21192Минимальная температура ячейкиREAL32
0x211A1Адрес устройства Logic, к которому подключена ячейка с минимальной температуройU16
0x211B1Номер ячейки с минимальной температуройU16
0x211C-0x211D2Максимальная температура ячейкиREAL32
0x211E1Адрес устройства Logic, к которому подключена ячейка с максимальной температуройU16
0x211F1Номер ячейки с максимальной температуройU16
0x2120-0x21212Минимальное напряжение среди ячеекREAL32
0x21221Адрес устройства Logic, к которому подключена ячейка с минимальным напряжениемU16
0x21231Номер ячейки с минимальным напряжениемU16
0x2124-0x21252Максимальное напряжение среди ячеекREAL32
0x21261Адрес устройства Logic, к которому подключена ячейка с максимальным напряжениемU16
0x21271Номер ячейки с максимальным напряжениемU16
0x21281

Флаг наличия ошибки:

0 — нет ошибок;

1 — имеются ошибки.

U16
0x2130-0x21312Энергия, полученная от зарядного устройства, Вт×чREAL32
0x2132-0x21332Энергия, потреблённая нагрузкой, Вт×чREAL32
0x2134-0x21352Энергия, рассеянная на балансировочных резисторах, Вт×чREAL32
0x217B-0x217C2Заряд, полученный батареей от зарядного устройства, А×чREAL32
0x217D-0x217E2Заряд, переданный нагрузке от батареи, А×чREAL32
0x21B81Флаг индикации балансировки ячеекU16
0x21CA-0x21CB2Среднее напряжение ячеек в батарее, ВREAL32
0x2400-0x24012Ток (сенсор 1, малый диапазон), AREAL32

0x2402-0x2403

2Итоговый ток АКБ, AREAL32
0x24101

Состояние батареи:

0 – Неизвестно;

1 – Charing ON – заряд;

2 – Charging OFF – нет заряда;

3 – Relaxed (after charging) – батарея в состоянии релаксации после заряда;

4 – Discharging ON – разряд;

5 – Discharging OFF – нет разряда;

6 – Relaxed (after discharging) – батарея в состоянии релаксации после разряда.

U16
0x2411-0x24122Время нахождения в текущем состоянии (см. 0x2410), секU32

Регистры хранения

Register addressКоличество регистровСодержимоеТип параметра
0x40001Адрес устройства BMS Logic, чьи параметры должны отображаться в регистрах 0x2011-0x20C9U16
0x51001

Программное управление сигналом "Battery cover". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Battery cover".

U16
0x51001

Программное управление сигналом "Battery cover". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Battery coВer".

U16
0x51011

Программное управление сигналом "Charger connected". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Charger connected".

U16
0x51021

Программное управление сигналом "Power down request". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Power down request".

U16
0x51031

Программное управление сигналом "Inhibit charging". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Inhibit charging".

U16
0x51041

Программное управление сигналом "Inhibit discharging". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Inhibit discharging".

U16
0x51051

Программное управление сигналом "Charging contactor feedback". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Charging contactor feedback".

U16
0x51061

Программное управление сигналом "Discharging contactor feedback". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Discharging contactor feedback".

U16
0x51071

Программное управление сигналом "Insulation status". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Insulation status".

U16
0x51081

Программное управление сигналом "Charge request". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Charge request".

U16
0x51091

Программное управление сигналом "Precharge request". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Precharge request".

U16
0x510A1

Программное управление сигналом "Discharge request". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Discharge request".

U16
0x510B1

Программное управление сигналом "PCH contactor feedback". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "PCH contactor feedback".

U16
0x510C1

Программное управление сигналом "CH/DCH contactor feedback". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "CH/DCH contactor feedback".

U16
0x510D1

Программное управление сигналом "Main contactor feedback". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Main contactor feedback".

U16
0x510E1

Программное управление сигналом "Interlock". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Interlock".

U16
0x510F1

Программное управление сигналом "Fuse 1". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Fuse 1".

U16
0x51101

Программное управление сигналом "Fuse 2". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Fuse 2".

U16
0x51111

Программное управление сигналом "Fuse 3". Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала "Fuse 3".

U16
0x51121

Программное управление сигналом "Circuit breaker status".

Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала

"Circuit breaker status".

U16
0x51131

Программное управление сигналом "Balancing request" signal. Allowable values:

Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала

"Balancing request".

U16
0x51141

Программное управление сигналом "Close Main contactor" signal.

Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала

"Close Main contactor".

U16
0x51151

Программное управление сигналом "Close External 1" signal.

Возможные значения:

0 – сбросить сигнал;

1 – установить сигнал;

2-65535 – использовать физическое состояние сигнала

"Close External 1".

U16