6.2 Протокол Modbus
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).
Регистры ввода
Регистр | Количество регистров | Содержимое | Тип параметра |
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] |
Battery state | |||
0x1000 | 1 | Степень заряда АКБ (SOC), % | U16 |
0x1001 | 1 | Степень работоспособности батареи (SOH), % | U16 |
0x1002 | 1 | Эффективность балансировки батареи, % Примечание – Значение рассчитывается как минимальная эффективность балансировки среди всех модулей. | U16 |
0x1003 | 1 | Состояние батареи: 0 – Off – батарея отключена; 1 – Pre-balancing – предзаряд батарейных модулей; 2 – Balancing – балансировка батарейных модулей; 3 – Precharging – предзаряд модульной батареи; 4 – Idle – простой модульной батареи (ток заряда и разряда не детектируется); 5 – Charging – заряд модульной батареи; 6 – Discharging – разряд модульной батареи. | U16 |
0x1004-0x1005 | 2 | Напряжение АКБ, В | REAL32 |
0x1006-0x1007 | 2 | Итоговый ток АКБ, A | REAL32 |
0x1008-0x1009 | 2 | Сопротивление АКБ, Ом | REAL32 |
0x100A-0x100B | 2 | Температура 1, °C | REAL32 |
0x100C-0x100D | 2 | Температура 2, °C | REAL32 |
0x100E-0x100F | 2 | Минимальная температура среди модулей, °C | REAL32 |
0x1010-0x1011 | 2 | Максимальная температура среди модулей, °C | REAL32 |
0x1012-0x1013 | 2 | Эффективная ёмкость АКБ, А×ч | REAL32 |
0x1014-0x1015 | 2 | Энергия, полученная от зарядного устройства, Вт×ч | REAL32 |
0x1016-0x1017 | 2 | Энергия, потреблённая нагрузкой, Вт×ч | REAL32 |
0x1018-0x1019 | 2 | Энергия, рассеянная на балансировочных резисторах, Вт×ч | REAL32 |
0x101A-0x101B | 2 | Лимит тока заряда батареи, А | REAL32 |
0x101C-0x101D | 2 | Лимит тока разряда батареи, A | REAL32 |
0x101E-0x101F | 2 | Время нахождения в текущем состоянии (см. 0x1003), сек | U32 |
0x1020-0x1021 | 2 | Внутренние сигналы (битовое поле): бит 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-0x1023 | 2 | Регистр ошибок 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-0x1025 | 2 | Ошибки Voltage unbalance CH (битовое поле): бит i – ошибка (i+1)го модуля. | U32 |
0x1026-0x1027 | 2 | Ошибки Voltage unbalance DCH errors (битовое поле). Примечание – назначение регистров идентично регистрам 0x1024-0x1025 | U32 |
0x1028-0x1029 | 2 | Ошибки Current unbalance CH errors (битовое поле). Примечание – назначение регистров идентично регистрам 0x1024-0x1025 | U32 |
0x102A-0x102B | 2 | Ошибки Current unbalance DCH errors (битовое поле). Примечание – назначение регистров идентично регистрам 0x1024-0x1025 | U32 |
0x102C-0x102D | 2 | Ошибки Charging current unbalance errors (битовое поле). Примечание – назначение регистров идентично регистрам 0x1024-0x1025 | U32 |
0x102E-0x102F | 2 | Ошибки Discharging current unbalance errors (битовое поле). Примечание – назначение регистров идентично регистрам 0x1024-0x1025 | U32 |
0x1030-0x1031 | 2 | Накопительные внутренние сигналы (побитовое ИЛИ битовых полей «Внутренние сигналы» всех модулей; битовое поле): бит 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-0x1033 | 2 | Накопительные ошибки 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-0x1037 | 2 | Оставшееся время до полного разряда, сек. Примечание – Значение 0xFFFFFFFF соответствует случа., когда устройство не может рассчитать оставшееся времяhen the device cannot calculate the remaining time. | U32 |
0x1038-0x1039 | 2 | Common errors 2 (битовое поле): бит 0 – “Power fault”; биты 1-31 – не используются. | U32 |
0x103A-0x103B | 2 | 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) | 1 | Module state of charge (SOC), % | U16 |
0x2002 (offset 0x0002) | 1 | Module state of health (SOH), % | U16 |
0x2003 (offset 0x0003) | 1 | Module balancing efficiency, % | U16 |
0x2004-0x2008 (offset 0x0004) | 5 | BMS firmware version. Example: “1.59.1” | CHAR[10] |
0x2009 (offset 0x0009) | 1 | Reserved | U16 |
0x200A-0x200B (offset 0x000A) | 2 | Module voltage, V | REAL32 |
0x200C-0x200D (offset 0x000C) | 2 | Module current, А | REAL32 |
0x200E-0x200F (offset 0x000E) | 2 | Module resistance, Ohm | REAL32 |
0x2010-0x2011 (offset 0x0010) | 2 | Minimum cell temperature | REAL32 |
0x2012-0x2013 (offset 0x0012) | 2 | Maximum cell temperature | REAL32 |
0x2014-0x2015 (offset 0x0014) | 2 | Minimum cell voltage | REAL32 |
0x2016-0x2017 (offset 0x0016) | 2 | Maximum cell voltage | REAL32 |
0x2018-0x2019 (offset 0x0018) | 2 | Effective capacity, A×h | REAL32 |
0x201A-0x201B (offset 0x001A) | 2 | Charge current limit, A | REAL32 |
0x201C-0x201D (offset 0x001C) | 2 | Discharge current limit, A | REAL32 |
0x201E-0x201F (offset 0x001E) | 2 | Energy received from the charger, W×h | REAL32 |
0x2020-0x2021 (offset 0x0020) | 2 | Energy consumed by the load, W×h | REAL32 |
0x2022-0x2023 (offset 0x0022) | 2 | Energy dissipated by the balancing resistors, W×h | REAL32 |
0x2024-0x2025 (offset 0x0024) | 2 | Number of 80% charge/discharge cycles | REAL32 |
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) | 2 | Module depth of discharge, A×h | REAL32 |
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
Регистр | Количество регистров | Содержимое | Тип параметра |
0x5000 | 1 | 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 |
0x5001 | 1 | 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 |
0x5002 | 1 | 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 |
0x5003 | 1 | 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 |
0x5004 | 1 | 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 |
0x5005 | 1 | 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 |
0x5006 | 1 | 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 |
0x5007 | 1 | 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 |
0x5008 | 1 | 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 |
0x5009 | 1 | 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 |
0x500A | 1 | 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 |
0x500B | 1 | 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 |
0x500C | 1 | Software control of the "Interlock" signal. Allowable values: 0 – clear the signal; 1 – set the signal; 2-65535 – use the physical input "Interlock". | U16 |