6.2 Протокол Modbus
Протоколы связи
Протокол Modbus
Общая информация
Плата 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 соответствует случа., когда устройство не может рассчитать оставшееся время. | U32 |
0x1038-0x1039 | 2 | Ошибки 2 (битовое поле): бит 0 – “Power fault”; биты 1-31 – не используются. | U32 |
0x103A-0x103B | 2 | Дискретные входы (битовое поле): бит 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 |
Состояние Модуля №1: базовый адрес 0x2000 | |||
0x2000 (смещение 0x0000) | 1 | Состояние модуля: 0 – Неизвестно; 1 – Charing ON – заряд; 2 – Charging OFF – нет заряда; 3 – Relaxed (after charging) – батарея в состоянии релаксации после заряда; 4 – Discharging ON – разряд; 5 – Discharging OFF – нет разряда; 6 – Relaxed (after discharging) – батарея в состоянии релаксации после разряда. | U16 |
0x2001 (смещение 0x0001) | 1 | Степень заряда модуля (SOC), % | U16 |
0x2002 (смещение 0x0002) | 1 | Степень работоспособности модуля (SOH), % | U16 |
0x2003 (смещение 0x0003) | 1 | Module balancing efficiency, % | U16 |
0x2004-0x2008 (смещение 0x0004) | 5 | Версия ВПО BMS. Пример: “1.69.1” | CHAR[10] |
0x2009 (смещение 0x0009) | 1 | Зарезервировано | U16 |
0x200A-0x200B (смещение 0x000A) | 2 | Напряжение модуля, В | REAL32 |
0x200C-0x200D (смещение 0x000C) | 2 | Итоговый ток модуля, A | REAL32 |
0x200E-0x200F (смещение 0x000E) | 2 | Сопротивление модуля, Ом | REAL32 |
0x2010-0x2011 (смещение 0x0010) | 2 | Минимальная температура ячейки модуля | REAL32 |
0x2012-0x2013 (смещение 0x0012) | 2 | Максимальная температура ячейки модуля | REAL32 |
0x2014-0x2015 (смещение 0x0014) | 2 | Минимальное напряжение среди ячеек модуля | REAL32 |
0x2016-0x2017 (смещение 0x0016) | 2 | Максимальное напряжение среди ячеек модуля | REAL32 |
0x2018-0x2019 (смещение 0x0018) | 2 | Эффективная ёмкость модуля, А×ч | REAL32 |
0x201A-0x201B (смещение 0x001A) | 2 | Лимит тока заряда модуля, A | REAL32 |
0x201C-0x201D (смещение 0x001C) | 2 | Лимит тока разряда модуля, A | REAL32 |
0x201E-0x201F (смещение 0x001E) | 2 | Энергия, полученная модулем от зарядного устройства, Вт×ч | REAL32 |
0x2020-0x2021 (смещение 0x0020) | 2 | Энергия, потреблённая от модуля нагрузкой, Вт×ч | REAL32 |
0x2022-0x2023 (смещение 0x0022) | 2 | Энергия, рассеянная на балансировочных резисторах модуля, Вт×ч | REAL32 |
0x2024-0x2025 (смещение 0x0024) | 2 | Количество циклов заряда/разряда до 80% | REAL32 |
0x2026-0x2027 (смещение 0x0026) | 2 | Внутренние сигналы (битовое поле). Примечание – назначение регистров совппадает с регистрами 0x1030-0x1031. | U32 |
0x2028-0x2029 (смещение 0x0028) | 2 | Ошибки 1 (битовое поле). Примечание – назначение регистров совппадает с регистрами 0x1032-0x1033. | U32 |
0x202A-0x202B (смещение 0x002A) | 2 | Ошибки 2 (битовое поле). Примечание – назначение регистров совппадает с регистрами x1034-0x1035. | U32 |
0x202C-0x202D (смещение 0x002C) | 2 | Входные сигналы (битовое поле): бит 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 – Зарезервировано. | U32 |
0x202E-0x202F (смещение 0x002E) | 2 | Глубина разряда модуля (DOD), А×ч | REAL32 |
Состояние модуля №2: базовый адрес 0x2200 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №3: базовый адрес 0x2400 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №4: базовый адрес 0x2600 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №5: базовый адрес 0x2800 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №6: базовый адрес 0x2A00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №7: базовый адрес 0x2C00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №8: базовый адрес 0x2E00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №9: базовый адрес 0x3000 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №10: базовый адрес 0x3200 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №11: базовый адрес 0x3400 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №12: базовый адрес 0x3600 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №13: базовый адрес 0x3800 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №14: базовый адрес 0x3A00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №15: базовый адрес 0x3C00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №16: базовый адрес 0x3E00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №17: базовый адрес 0x4000 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №18: базовый адрес 0x4200 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №19: базовый адрес 0x4400 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №20: базовый адрес 0x4600 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №21: базовый адрес 0x4800 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №22: базовый адрес 0x4A00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №23: базовый адрес 0x4C00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №24: базовый адрес 0x4E00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №25: базовый адрес 0x5000 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №26: базовый адрес 0x5200 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №27: базовый адрес 0x5400 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №28: базовый адрес 0x5600 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №29: базовый адрес 0x5800 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №30: базовый адрес 0x5A00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №31: базовый адрес 0x5C00 Регистры имеют тот же формат, как и у Модуля №1 | |||
Состояние модуля №32: базовый адрес 0x5E00 Регистры имеют тот же формат, как и у Модуля №1 |
Регистры хранения
Регистр | Количество регистров | Содержимое | Тип параметра |
0x4100-0x4101 | 2 | Команда квитирования ошибок в жернале ошибок (битовое поле). Каждое i-вый бит соответствует записи №(i+1). Примечания:
| U32 |
0x5000 | 1 | Программное управление сигналом "Battery cover". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Battery cover". | U16 |
0x5001 | 1 | Программное управление сигналом "Charge request". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Charge request". | U16 |
0x5002 | 1 | Программное управление сигналом "Precharge request". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Precharge request". | U16 |
0x5003 | 1 | Программное управление сигналом "Discharge request". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Discharge request". | U16 |
0x5004 | 1 | Программное управление сигналом "CH contactor feedback". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "CH contactor feedback". | U16 |
0x5005 | 1 | Программное управление сигналом "DCH contactor feedback". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа “DCH contactor feedback". | U16 |
0x5006 | 1 | Программное управление сигналом "CH/DCH contactor feedback". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "CH/DCH contactor feedback". | U16 |
0x5007 | 1 | Программное управление сигналом "Insulation status". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Insulation status". | U16 |
0x5008 | 1 | Программное управление сигналом "Join to charge". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Join to charge". | U16 |
0x5009 | 1 | Программное управление сигналом "Join to discharge". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Join to discharge". | U16 |
0x500A | 1 | Программное управление сигналом "PCH contactor feedback". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "PCH contactor feedback". | U16 |
0x500B | 1 | Программное управление сигналом "Main contactor feedback". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Main contactor feedback". | U16 |
0x500C | 1 | Программное управление сигналом "Interlock". Возможные значения: 0 – снять сигнал; 1 – установить сигнал; 2-65535 – Использовать физическое состояние входа "Interlock". | U16 |