6.2 Протокол Modbus

Редактировал(а) Admin 2025/02/28 10:08

Communication protocols

Modbus protocol

Общая информация

Устройство BMS Mini S / BMS Mini реализует протокол 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

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

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

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

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

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

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

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

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

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

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

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

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

бит 5 – зарезервировано (установлен в 0);

бит 6 – зарезервировано (установлен в 0);

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

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

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

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

бит 11 – зарезервировано (установлен в 0);

бит 12 – зарезервировано (установлен в 0);

бит 13 – зарезервировано (установлен в 0);

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

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

U16
0x2001-0x20022Ток через АКБ, имеренный датчиком холла, АREAL32
0x2003-0x20042

Внешняя температура, °C

REAL32
0x2007-0x20082

Регистр ошибок 1 (битовое поле):

бит 0 – ошибка «Превышение тока»;

бит 1 – ошибка «Низкое напряжение»;

бит 2 – ошибка «Высокое напряжение»;

бит 3 – ошибка «Низкая температура (разряд)»;

бит 4 – ошибка «Высокая температура (разряд)»;

бит 5 – ошибка «Открыта крышка АКБ»;

бит 6 – зарезервировано (установлен в 0);

бит 7 – зарезервировано (установлен в 0);

бит 8 – зарезервировано (установлен в 0);

бит 9 – ошибка «Потеря связи c Logic»;

бит 10 – критическая ошибка;

бит 11 – ошибка Crown;

бит 12 – ошибка «Несоответствие кол-ва ячеек»;

бит 13 – ошибка «Потеря связи с HYG»;

бит 14 – флаг о необходимости квитировать записи в журнале ошибок;

бит 15 – ошибка «Потеря связи с Combilift»;

бит 16 – ошибка «Короткое замыкание»;

бит 17 – ошибка «Перегрев контактора»;

бит 18 – зарезервировано (установлен в 0);

бит 19 – ошибка АЦП;

бит 20 – ошибка в цепи подключения датчика тока (обрыв или короткое замыкание);

бит 21 – большая частота переключений контактора заряда;

бит 22 – большая частота переключений контактора разряда;

бит 23 – ошибка «Потеря связи с BMS Current Sensor»;

бит 24 – внутренняя ошибка BMS Current Sensor;

бит 25 – зарезервировано (установлен в 0);

бит 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 – зарезервировано (установлен в 0);

бит 16 – зарезервировано (установлен в 0);

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

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

бит 0 — состояние MOSFET #1;

бит 1 — state of the MOSFET #2;

бит 2 — state of the MOSFET #3;

бит 3 — state of the MOSFET #4;

bits 4-15 — not used.

U16
0x200E2

Errors 2 (битовое поле):

бит 0 – “Low CH temperature”, temperature is too low for charging;

бит 1 – “High CH temperature”, temperature is too high for charging;

бит 2 – “SD mount error”;

бит 3 – “SD read/write error”;

бит 4 – “Unallowable charging”, charging the battery through the discharging contactor;

бит 5 – “Stuck contactor”;

бит 6 – зарезервировано (установлен в 0);

бит 7 – зарезервировано (установлен в 0);

бит 8 – “Insulation fault”;

бит 9 – зарезервировано (установлен в 0);

бит 10 – зарезервировано (установлен в 0);

бит 11 – зарезервировано (установлен в 0);

бит 12 – "Contactor feedback error";

бит 13 – “General error”;

бит 14 – зарезервировано (установлен в 0);

бит 15 – зарезервировано (установлен в 0);

бит 16 – зарезервировано (установлен в 0);

бит 17 – "Precharge error";

бит 18 – зарезервировано (установлен в 0);

бит 19 – "Current limit error";

bits 20-31 — reserved.

U32
0x20111

State of the cell monitor (битовое поле):

бит 0 — device is present;

бит 1 — device is online;

бит 2 — device is ready;

бит 3 — data from the device is actual;

бит 4 — temperature sensor #1 is present;

бит 5 — temperature sensor #2 is present;

бит 6 — temperature sensor #1 is shorted;

бит 7 — temperature sensor #2 is shorted;

bits 8-15 — reserved.

U16
0x2012-0x20132Temperature of the device, °CREAL32
0x2014-0x20152

Cell balancing flags (битовое поле):

бит i — balancing resistor is connected to the (i+1)th cell.

U32
0x2016-0x202920

Array of cell states. Each element of the array corresponds to a cell and is a битовое поле:

бит 0 — cell is present;

бит 1 — temperature sensor is present;

бит 2 — need to connect a balancing resistor to the cell;

бит 3 — balancing resistor is connected to the cell;

бит 4 — temperature sensor is shorted;

бит 5 — wires are connected to the cell;

бит 6 — the cell is balancing;

bits 7-15 — reserved.

U16[20]
0x202A-0x205140Array of cell voltages (V)REAL32[20]
0x2052-0x207940Array of cell temperatures (°C)REAL32[20]
0x207A-0x20A140Array of cell SOCs (%)REAL32[20]
0x20A2-0x20C940Array of cell resistances (Ohm)REAL32[20]
0x20CD1Number of cells connectedU16
0x20F41

Discrete input signals 2 (битовое поле):

бит 0 – “Fuse 2”;

бит 1 – “Fuse 3”;

бит 2 – “Circuit breaker status”;

бит 3 – "Balancing request";

бит 4 – "Close Main contactor";

бит 5 – "Close External 1";

bits 6-15 – reserved.

U16
0x2100-0x21012Battery state of charge (SOC), %REAL32
0x21031Number of cellsU16
0x2104-0x21052Battery voltage, VREAL32
0x2106-0x21072Battery resistance, OhmREAL32
0x2108-0x21092Effective capacity, A×hREAL32
0x210A-0x210B2Balancing effectivity, %REAL32
0x210C-0x210D2State of health, %REAL32
0x210E-0x210F2Depth of discharge, A×hREAL32
0x2118-0x21192Minimum cell temperatureREAL32
0x211B1Position of the cell whose temperature is minimalU16
0x211C-0x211D2Maximum cell temperatureREAL32
0x211F1Position of the cell whose temperature is maximalU16
0x2120-0x21212Minimum cell voltageREAL32
0x21231Position of the cell whose voltage is minimalU16
0x2124-0x21252Maximum cell voltageREAL32
0x21271Position of the cell whose voltage is maximalU16
0x21281

Error flag:

0 — no errors;

1 — there are some errors.

U16
0x2130-0x21312Energy received from the charger, W×hREAL32
0x2132-0x21332Energy consumed by the load, W×hREAL32
0x2134-0x21352Energy dissipated by the balancing resistors, W×hREAL32
0x21701

Battery state:

0 – Unknown;

1 – Charging ON;

2 – Charging OFF;

3 – Relaxed (after charging);

4 – Discharging ON;

5 – Discharging OFF;

6 – Relaxed (after discharging).

U16
0x2171-0x21722Duration of the battery state (0x2170), secondsU32
0x217B-0x217C2Coulomb received from the charger, A×hREAL32
0x217D-0x217E2Coulomb consumed by the load, A×hREAL32
0x21B81Flag indicating that the cells are balancingU16
0x21B92Average cell voltage, VREAL32
0x24002Current measured by the auxiliary current sensor, AREAL32
0x24022

Final battery current, A

Note — Typically it is the sum of the values measured by the main and auxiliary current sensors

REAL32

Holding registers

Register addressNumber of registersContentType
0x41002

Command to acknowledge errors in the errors journal (битовое поле). Each ith бит corresponds to (i+1) record.

Notes:

1 – After the errors are acknowledged, the register value will be set to 0.

2 – To acknowledge all errors, set 0xFFFFFFFF.

U32
0x51001

Software control of the "Battery cover" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Battery cover".

U16
0x51011

Software control of the "Charger connected" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Charger connected".

U16
0x51021

Software control of the "Power up/down request" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Power down request".

U16
0x51031

Software control of the "Inhiбит charging" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Inhiбит charging".

U16
0x51041

Software control of the "Inhiбит discharging" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Inhiбит discharging".

U16
0x51071

Software control of the "Insulation status" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Insulation status".

U16
0x51081

Software control of the "Charge request" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Charge request".

U16
0x51091

Software control of the "Precharge request" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Precharge request".

U16
0x510A1

Software control of the "Discharge request" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Discharge request".

U16
0x510E1

Software control of the "Interlock" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Interlock".

U16
0x510F1

Software control of the "Fuse 1" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Fuse 1".

U16
0x51101

Software control of the "Fuse 2" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Fuse 2".

U16
0x51111

Software control of the "Fuse 3" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Fuse 3".

U16
0x51121

Software control of the "Circuit breaker status" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Circuit breaker status".

U16
0x51131

Software control of the "Balancing request" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Balancing request".

U16
0x51141

Software control of the "Close Main contactor" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Close Main contactor".

U16
0x51151

Software control of the "Close External 1" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Close External 1".

U16