6.2 Протокол Modbus

Редактировал(а) Admin 2025/02/21 13:06

Communication protocols

Modbus protocol

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

Плата BMS Main 3X реализует протокол Modbus для настройки и чтения состояния модульной АКБ и BMS. BMS является Modbus-сервером и отвечает на команды Modbus-клиента.

Взаимодействие с устройством осуществляется через шину RS-485 (Modbus RTU) или сеть Ethernet (Modbus TCP).

Параметры шины RS-485:

  • частота, бит/с — 600, 1200, 2400, 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200;
  • длина слова, бит — 8;
  • четность — нет;
  • адрес устройства (по умолчанию) — 64.

Параметры Ethernet:

  • порт — 502.

Ниже приводятся описание Input и Holding регситров. В колонке «Тип параметра»:

  • CHAR – символ (знаковое 8-разрядное число);
  • 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]
Battery state
0x10001Степень заряда АКБ (SOC), %U16
0x10011Степень работоспособности батареи (SOH), %U16
0x10021

Эффективность балансировки батареи, %

Примечание – Значение рассчитывается как минимальная эффективность балансировки среди всех модулей.

U16
0x10031

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

0 – Off – батарея отключена;

1 – Pre-balancing – предзаряд батарейных модулей;

2 – Balancing – балансировка батарейных модулей;

3 – Precharging – предзаряд модульной батареи;

4 – Idle – простой модульной батареи (ток заряда и разряда не детектируется);

5 – Charging – заряд модульной батареи;

6 – Discharging – разряд модульной батареи.

U16
0x1004-0x10052Напряжение АКБ, ВREAL32
0x1006-0x10072Итоговый ток АКБ, AREAL32
0x1008-0x10092Сопротивление АКБ, ОмREAL32
0x100A-0x100B2Температура 1, °CREAL32
0x100C-0x100D2Температура 2, °CREAL32
0x100E-0x100F2Минимальная температура среди модулей, °CREAL32
0x1010-0x10112Максимальная температура среди модулей, °CREAL32
0x1012-0x10132Эффективная ёмкость АКБ, А×чREAL32
0x1014-0x10152Энергия, полученная от зарядного устройства, Вт×чREAL32
0x1016-0x10172Энергия, потреблённая нагрузкой, Вт×чREAL32
0x1018-0x10192Энергия, рассеянная на балансировочных резисторах, Вт×чREAL32
0x101A-0x101B2Лимит тока заряда батареи, АREAL32
0x101C-0x101D2Лимит тока разряда батареи, AREAL32
0x101E-0x101F2Время нахождения в текущем состоянии (см. 0x1003), секU32
0x1020-0x10212

Внутренние сигналы (битовое поле):

бит 0 – сигнал “Init” (current sensor calibration or battery modules scanning is performed);

бит 1 – сигнал “Charging” (0 – разомкнут, 1 – замкнут);

бит 2 – сигнал “Discharging” (0 – разомкнут, 1 – замкнут);

бит 3 – сигнал “Charging current present”;

бит 4 – сигнал “Discharging current present”;

бит 5 – сигнал “Charging/Discharging” (0 – разомкнут, 1 – замкнут);

бит 6 – сигнал “Precharging” (0 – разомкнут, 1 – замкнут);

бит 7 – сигнал “Interlock”;

бит 8 – сигнал “Fuse 1”;

бит 9 – сигнал “Fuse 2”;

бит 10 – сигнал “Fuse 3”;

бит 11 – сигнал “Heater” (0 – off, 1 – on);

бит 12 – сигнал “Cooler” (0 – off, 1 – on);

бит 13 – сигнал “Main contactor” (0 – разомкнут, 1 – замкнут);

бит 14 – сигнал “Service reset”;

бит 15 – сигнал “Coolant pump”;

бит 16 – сигнал “General error”;

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

U32
0x1022-0x10232

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

бит 0 – ошибка“Battery cover”;

бит 1 – ошибка“Modules offline”;

бит 2 – “Critical error”;

бит 3 – ошибка“Voltage unbalance (CH)”;

бит 4 – ошибка“Voltage unbalance (DCH)”;

бит 5 – ошибка“Current unbalance (CH)”;

бит 6 – ошибка“Current unbalance (DCH)”;

бит 7 – ошибка“Charging current unbalance”;

бит 8 – ошибка“Discharging current unbalance”;

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

бит 10 – “CH contactor feedback error”;

бит 11 – “DCH contactor feedback error”;

бит 12 – “CH/DCH contactor feedback error”;

бит 13 – “Insulation fault”;

бит 14 – ошибка“WDT reset”;

бит 15 – ошибка“Overcurrent”;

бит 16 – ошибка“Power switch error”;

бит 17 – ошибка“High humidity”;

бит 18 – ошибка“Water”;

бит 19 – ошибка“Short circuit”;

бит 20 – ошибка“Contactor high temperature”;

бит 21 – ошибка“Stuck contactor”;

бит 22 – “HVIL error”;

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

бит 24 – ошибка датчика тока;

бит 25 – ошибка монтирования SD карты;

бит 26 – ошибка файловой системы;

бит 27 – ошибка измерения высокого напряжения;

бит 28 – “PCH contactor feedback error”;

бит 29 – “Main contactor feedback error”;

бит 30 – ошибка предзаряда;

бит 31 – ошибка “Current limit error”.

U32
0x1024-0x10252

Ошибки Voltage unbalance CH (битовое поле):

бит i – ошибка (i+1)го модуля.

U32
0x1026-0x10272

Ошибки Voltage unbalance DCH errors (битовое поле).

Примечание –  назначение регистров идентично регистрам 0x1024-0x1025

U32
0x1028-0x10292

Ошибки Current unbalance CH errors (битовое поле).

Примечание –  назначение регистров идентично регистрам 0x1024-0x1025

U32
0x102A-0x102B2

Ошибки Current unbalance DCH errors (битовое поле).

Примечание –  назначение регистров идентично регистрам 0x1024-0x1025

U32
0x102C-0x102D2

Ошибки Charging current unbalance errors (битовое поле).

Примечание –  назначение регистров идентично регистрам 0x1024-0x1025

U32
0x102E-0x102F2

Ошибки Discharging current unbalance errors (битовое поле).

Примечание –  назначение регистров идентично регистрам 0x1024-0x1025

U32
0x1030-0x10312

Накопительные внутренние сигналы (побитовое ИЛИ битовых полей «Внутренние сигналы» всех модулей; битовое поле):

бит 0 — сигнал "Low SOC";

бит 1 — сигнал "High charging current";

бит 2 — сигнал “Charging” (0 – разомкнут, 1 – замкнут);

бит 3 — сигнал "Allow charging" (0 – разомкнут, 1 – замкнут);

бит 4 — сигнал "Charging current present";

бит 5 — сигнал “Discharging” (0 – разомкнут, 1 – замкнут);

бит 6 — сигнал "Discharging current present";

бит 7 — сигнал "Voltage too high for charging";

бит 8 — сигнал "Heater" (0 – off, 1 – on);

бит 9 — сигнал "Cooler" (0 – off, 1 – on);

бит 10 — сигнал “Shutdown request (HYG/Spirit)”;

бит 11 — сигнал “Init” (калибруется датчик тока и сканируются платы BMS Logic);

бит 12 — сигнал “Precharging” (0 – разомкнут, 1 – замкнут);

бит 13 — сигнал “Shutdown request (Combilift)”;

бит 14 — сигнал "Cell analysis";

бит 15 — сигнал “Balancing 1”;

бит 16 — сигнал “Balancing 2”;

бит 17 — сигнал “Discharging (AUX)” (0 – разомкнут, 1 – замкнут);

бит 18 — сигнал “Power down ACK”;

бит 19 — сигнал “Crown EWS”;

бит 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-31 — не используются.

U32
0x1032-0x10332

Накопительные ошибки 1 (побитовое ИЛИ битовых полей «Ошибки 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
0x1034-0x1035 

Накопительные ошибки 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-31 — не используются.

U32
0x1036-0x10372

Оставшееся время до полного разряда, сек.

Примечание – Значение 0xFFFFFFFF соответствует случа., когда устройство не может рассчитать оставшееся времяhen the device cannot calculate the remaining time.

U32
0x1038-0x10392

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

бит 0 – “Power fault”;

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

U32
0x103A-0x103B2

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

бит 0 – сигнал “Battery cover”;

бит 1 – сигнал “Charge request”;

бит 2 – сигнал “Precharge request”;

бит 3 – сигнал “Discharge request”;

бит 4 – сигнал “CH contactor feedback”;

бит 5 – сигнал “DCH contactor feedback”;

бит 6 – сигнал “CH/DCH contactor feedback”;

бит 7 – сигнал “Insulation status”;

бит 8 – сигнал “Join to charge”;

бит 9 – сигнал “Join to discharge;

бит 10 – сигнал “PCH contactor feedback”;

бит 11 – сигнал “Main contactor feedback”;

бит 12 – сигнал “Interlock”;

бит 13 – сигнал “Power down request”;

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

U32
Module #1 state: base address 0x2000

0x2000

(offset 0x0000)

1

Module state (enumeration):

0 – Unknown;

1 – Charging ON;

2 - Charging OFF;

3 – Relaxed (after charging);

4 – Discharging ON;

5 – Discharging OFF;

6 – Relaxed (after discharging).

U16

0x2001

(offset 0x0001)

1Module state of charge (SOC), %U16

0x2002

(offset 0x0002)

1Module state of health (SOH), %U16

0x2003

(offset 0x0003)

1Module balancing efficiency, %U16
0x2004-0x2008 (offset 0x0004)5

BMS firmware version.

Example: “1.59.1”

CHAR[10]

0x2009

(offset 0x0009)

1ReservedU16

0x200A-0x200B

(offset 0x000A)

2Module voltage, VREAL32

0x200C-0x200D

(offset 0x000C)

2Module current, АREAL32

0x200E-0x200F

(offset 0x000E)

2Module resistance, OhmREAL32

0x2010-0x2011

(offset 0x0010)

2Minimum cell temperatureREAL32

0x2012-0x2013

(offset 0x0012)

2Maximum cell temperatureREAL32

0x2014-0x2015

(offset 0x0014)

2Minimum cell voltageREAL32

0x2016-0x2017

(offset 0x0016)

2Maximum cell voltageREAL32

0x2018-0x2019

(offset 0x0018)

2Effective capacity, A×hREAL32

0x201A-0x201B

(offset 0x001A)

2Charge current limit, AREAL32

0x201C-0x201D

(offset 0x001C)

2Discharge current limit, AREAL32

0x201E-0x201F

(offset 0x001E)

2Energy received from the charger, W×hREAL32

0x2020-0x2021

(offset 0x0020)

2Energy consumed by the load, W×hREAL32

0x2022-0x2023

(offset 0x0022)

2Energy dissipated by the balancing resistors, W×hREAL32

0x2024-0x2025

(offset 0x0024)

2Number of 80% charge/discharge cyclesREAL32

0x2026-0x2027

(offset 0x0026)

2

Internal signals (битовое поле).

Note – Registry mapping is the same as for 0x1030-0x1031.

U32

0x2028-0x2029

(offset 0x0028)

2

Errors 1 (битовое поле).

Note – Registry mapping is the same as for 0x1032-0x1033.

U32

0x202A-0x202B

(offset 0x002A)

2

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

Note – Registry mapping is the same as for 0x1034-0x1035.

U32

0x202C-0x202D

(offset 0x002C)

2

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

бит 0 — сигнал "Battery cover";

бит 1 — сигнал "Charger connected";

бит 2 — сигнал "Power up/down request";

бит 3 — сигнал "Inhiбит charging";

бит 4 — сигнал "Inhiбит 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”;

бит 16 – сигнал “Fuse 2”;

бит 17 - сигнал “Fuse 3”;

бит 18 – сигнал “Circuit breaker status”;

биты 19-31 – reserved.

U32

0x202E-0x202F

(offset 0x002E)

2Module depth of discharge, A×hREAL32

Module #2 state: base address 0x2200

Registries have the same format as for Module #1

Module #3 state: base address 0x2400

Registries have the same format as for Module #1

Module #4 state: base address 0x2600

Registries have the same format as for Module #1

Module #5 state: base address 0x2800

Registries have the same format as for Module #1

Module #6 state: base address 0x2A00

Registries have the same format as for Module #1

Module #7 state: base address 0x2C00

Registries have the same format as for Module #1

Module #8 state: base address 0x2E00

Registries have the same format as for Module #1

Module #9 state: base address 0x3000

Registries have the same format as for Module #1

Module #10 state: base address 0x3200

Registries have the same format as for Module #1

Module #11 state: base address 0x3400

Registries have the same format as for Module #1

Module #12 state: base address 0x3600

Registries have the same format as for Module #1

Module #13 state: base address 0x3800

Registries have the same format as for Module #1

Module #14 state: base address 0x3A00

Registries have the same format as for Module #1

Module #15 state: base address 0x3C00

Registries have the same format as for Module #1

Module #16 state: base address 0x3E00

Registries have the same format as for Module #1

Module #17 state: base address 0x4000

Registries have the same format as for Module #1

Module #18 state: base address 0x4200

Registries have the same format as for Module #1

Module #19 state: base address 0x4400

Registries have the same format as for Module #1

Module #20 state: base address 0x4600

Registries have the same format as for Module #1

Module #21 state: base address 0x4800

Registries have the same format as for Module #1

Module #22 state: base address 0x4A00

Registries have the same format as for Module #1

Module #23 state: base address 0x4C00

Registries have the same format as for Module #1

Module #24 state: base address 0x4E00

Registries have the same format as for Module #1

Module #25 state: base address 0x5000

Registries have the same format as for Module #1

Module #26 state: base address 0x5200

Registries have the same format as for Module #1

Module #27 state: base address 0x5400

Registries have the same format as for Module #1

Module #28 state: base address 0x5600

Registries have the same format as for Module #1

Module #29 state: base address 0x5800

Registries have the same format as for Module #1

Module #30 state: base address 0x5A00

Registries have the same format as for Module #1

Module #31 state: base address 0x5C00

Registries have the same format as for Module #1

Module #32 state: base address 0x5E00

Registries have the same format as for Module #1

Holding registers

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

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

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

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

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

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

0 – clear the signal;

1 – set the signal;

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

U16
0x50051

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

0 – clear the signal;

1 – set the signal;

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

U16
0x50061

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

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

Software control of the "Join to charge" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Join to charge".

U16
0x50091

Software control of the "Join to discharge" signal. Allowable values:

0 – clear the signal;

1 – set the signal;

2-65535 – use the physical input "Join to discharge".

U16
0x500A1

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

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

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

0 – clear the signal;

1 – set the signal;

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

U16