5.2 Протокол Modbus

Редактировал(а) Admin 2025/01/10 20:50

Communication protocols

Modbus protocol

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

Плата BMS Main 2.x реализует протокол 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).

Input регистры

РегистрКоличество регистровСодержимоеТип параметра
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]
0x1000-0x10033

Текущее время на устройстве:

byte 0 — день (Двоично-десятичный код);

byte 1 — месяц (Двоично-десятичный код);

byte 2 — год (Двоично-десятичный код);

byte 3 — час (Двоично-десятичный код);

byte 4 — минуты (Двоично-десятичный код);

byte 5 — секунды (Двоично-десятичный код).

U8[6]
0x20001

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

REAL32
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 – сигнал «Повышенное напряжение» (EV);

бит 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 – сигнал «Готовность разряжаться»;

bit 25 – сигнал включения платы "Power up";

bits 26-31 – reserved.

U32
0x200B1

Discrete output signals (bitfield):

bit 0 — state of the output #1;

bit 1 — state of the output #2;

bit 2 — state of the output #3;

bit 3 — state of the output #4;

bits 4-15 — not used.

U16
0x200C1

Relay states (bitfield):

bit 0 — state of the relay #1;

bit 1 — state of the relay #2;

bit 2 — state of the relay #3;

bit 3 — state of the relay #4;

bits 4-15 — not used.

U16
0x200E-0x200F2

Errors 2 (bitfield):

bit 0 – "Low CH temperature", temperature is too low for charging;

bit 1 – “High CH temperature”, temperature is too high for charging;

bit 2 – “SD mount error”;

bit 3 – “SD read/write error”;

bit 4 – “Unallowable charging”, charging the battery through the discharging contactor;

bit 5 – “Stuck contactor”;

bit 6 – “CH contactor feedback error”;

bit 7 – “DCH contactor feedback error”;

bit 8 – “Insulation fault”;

bit 9 – “PCH contactor feedback error”;

bit 10 – “CH/DCH contactor feedback error”;

bit 11 – “Main contactor feedback error”;

bit 12 – reserved (set to 0);

bit 13 – “General error”;

bits 14-31 — reserved.

U32
0x20101Address or the BMS Logic device whose parameters are in registers 0x2011-0x20C9U16
0x20111

State of the BMS Logic (bitfield):

bit 0 — device is present;

bit 1 — device is online;

bit 2 — device is ready;

bit 3 — data from the device is actual;

bit 4 — temperature sensor #1 is present;

bit 5 — temperature sensor #2 is present;

bit 6 — temperature sensor #1 is shorted;

bit 7 — temperature sensor #2 is shorted;

bits 8-15 — reserved.

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

Cell balancing flags (bitfield):

bit i — balancing resistor is connected to the ith cell.

U32
0x2016-0x202920

Array of cells states. Each element of the array corresponds to a cell and is a bitfield:

bit 0 — cell is present;

bit 1 — temperature sensor is present;

bit 2 — need to connect a balancing resistor to the cell;

bit 3 — balancing resistor is connected to the cell;

bit 4 — temperature sensor is shorted;

bit 5 — wires are connected to the cell;

bits 6-15 — reserved.

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

Discrete input signals 2 (bitfield):

bit 0 – “Fuse 2”;

bit 1 – “Fuse 3”;

bit 2 – “Circuit breaker status”;

bits 3-15 – reserved.

U16
0x2100-0x21012Battery state of charge (SOC), %REAL32
0x21021Number of BMS Logic devicesU16
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
0x2110-0x21112Minimum BMS Logic temperatureREAL32
0x21121Address of the BMS Logic device whose temperature is minimalU16
0x2113-0x21142Maximum BMS Logic temperatureREAL32
0x21151Address of the BMS Logic device whose temperature is maximalU16
0x2116-0x21172BMS Logic polling rate, commands pre secondREAL32
0x2118-0x21192Minimum cell temperatureREAL32
0x211A1Address of the BMS Logic device which is connected to the cell whose temperature is minimalU16
0x211B1Position of the cell whose temperature is minimalU16
0x211C-0x211D2Maximum cell temperatureREAL32
0x211E1Address of the BMS Logic device which is connected to the cell whose temperature is maximalU16
0x211F1Position of the cell whose temperature is maximalU16
0x2120-0x21212Minimum cell voltageREAL32
0x21221Address of the BMS Logic device which is connected to the cell whose voltage is minimalU16
0x21231Position of the cell whose voltage is minimalU16
0x2124-0x21252Maximum cell voltageREAL32
0x21261Address of the BMS Logic device which is connected to the cell whose voltage is maximalU16
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
0x21401

SD-card mounting flag:

0 — not mounted;

1 — mounted.

U16
0x21411ReservedU16
0x21421ReservedU16
0x21701

Wi-Fi connection status:

0 — no connection;

1 — connection is established.

U16
0x2171-0x21722IP-address in the Wi-Fi networkU8[4]
0x2173-0x21753MAC-address of the Wi-Fi moduleU8[6]
0x2179-0x217A2Instant effective capacity, A×hREAL32
0x217B-0x217C2Coulomb received from the charger, A×hREAL32
0x217D-0x217E2Coulomb consumed by the load, A×hREAL32
0x217F-0x21802Ethernet IP-addressU8[4]
0x2181-0x21822Ethernet netmaskU8[4]
0x2183-0x21842Ethernet gatewayU8[4]
0x2185-0x21862Calibrated voltage in the reference line of the current sensor, VREAL32
0x218E2Voltage from the current sensor, VREAL32
0x21902Voltage in the reference line of the current sensor, VREAL32
0x21922Voltage from the auxiliary current sensor, VREAL32
0x21942Voltage in the reference line of the auxiliary current sensor, VREAL32
0x219F2Charge current limit, AREAL32
0x21A12Discharge current limit, AREAL32
0x21B81Flag indicating that the cells are balancingU16
0x21C62Calibrated voltage in the reference line of the auxiliary current sensor, VREAL32
0x21CA2Average cell voltage, VREAL32
0x2200-0x22034

Record #1 from the errors journal. First 32-bit word contains a timestamp, second 32-bit word contains errors 1 flags (see 0x2007-0x2008).

Timestamp format:

bits 0-5 — year;

bits 6-9 — month;

bits 10-14 — day;

bits 15-19 — hours;

bits 20-25 — minutes;

bits 26-31 — seconds.

U32[2]
0x2204-0x22074Record #2 from the errors journalU32[2]
0x2208-0x227B Records #3-31 from the errors journal 
0x227C-0x227F4Record #32 from the errors journalU32[2]
0x23001Number of the last record from the errors journal (1..32)U16
0x23804Record data #1 from the errors journal. First 32-bit word contains errors 2 flags (see 0x200E-0x200F).U32[2]
0x2384-0x23874Record data #2 from the errors journalU32[2]
0x2388-0x23FB Records data #3-31 from the errors journal 
0x23FC-0x23FF4Record data #32 from the errors journalU32[2]
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
0x24101

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
0x24112Duration of the battery state (0x2410), secondsU32
0x24202Nominal battery capacity, A×hREAL32
0x24222Maximum charge voltage, VREAL32
0x24242Minimum discharge voltage, VREAL32
0x24262Maximum charge current, AREAL32
0x24282Maximum discharge current, AREAL32

Holding registers

РегистрКоличество регистровСодержимоеТип параметра
0x40001Address of the BMS Logic device whose parameters should be in the input registers 0x2011-0x20C9U16
0x41002

Command to acknowledge errors in the errors journal (bitfield). Each ith bit 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 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 "Inhibit charging" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Inhibit charging".

U16
0x51041

Software control of the "Inhibit discharging" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Inhibit discharging".

U16
0x51051

Software control of the "Charging contactor feedback" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Charging contactor feedback".

U16
0x51061

Software control of the "Discharging contactor feedback" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Discharging contactor feedback".

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
0x510B1

Software control of the "PCH contactor feedback" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "PCH contactor feedback".

U16
0x510C1

Software control of the "CH/DCH contactor feedback" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "CH/DCH contactor feedback".

U16
0x510D1

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

0 – clear the signal;

1 – set the signal;

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

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