BYD Battery-Box HVM: SOC и мощность в KNX через Modbus TCP инвертора
Как получить SOC и мощность заряда/разряда BYD Battery-Box HVM через Modbus TCP инвертора (SolarEdge StorEdge, Fronius Symo Gen24, SMA Sunny Boy Storage) и передать в KNX для автоматизации самопотребления в латвийских домах.
Почему у BYD нет прямого порта Modbus
BYD Battery-Box HVM (высоковольтная система 403,2 В, 2,76–22,1 кВт·ч на стек) обменивается данными с инвертором через проприетарный протокол CAN-bus / EnergyLink по CAN-порту между батареей и инвертором. BYD не предоставляет пользовательски доступный порт Modbus TCP или RS485 на самой батарее. Все данные батареи должны считываться косвенно через сертифицированного партнёра-инвертора.
SolarEdge StorEdge + BYD: карта регистров
SolarEdge SE5K-RWS00BNN4 (StorEdge) с BYD Battery-Box HVM: Modbus TCP порт 1502, unit ID 1.
Специфичные для батареи holding-регистры (FC3, uint16 / int16):
| Регистр | Описание | Тип / Масштаб |
|---|---|---|
| 62784 (0xF540) | Средняя температура батареи 1 | int16, °C x10 |
| 62786 (0xF542) | Напряжение DC батареи 1 | uint16, В x100 |
| 62794 (0xF54A) | Мгновенная мощность батареи 1 | int16, Вт – положительное=заряд, отрицательное=разряд |
| 62798 (0xF54E) | Уровень заряда батареи 1 (SOC) | uint16, % |
| 62800 (0xF550) | Состояние здоровья батареи 1 (SOH) | uint16, % |
| 62852 (0xF584) | Битовая маска статуса батареи 1 | uint16: бит 3=заряд, бит 4=разряд, бит 11=ошибка |
Привязка KNX: регистр 62794 (int16, Вт) делённый на 1000 соответствует KNX DPT 9.001 (мощность батареи кВт), регистр 62798 – KNX DPT 5.001 (SOC %). Примечание: регистр 62794 – знаковый integer, шлюз MDT Modbus должен быть настроен на тип данных signed int16 для этого регистра.
Fronius Symo Gen24 + BYD: SunSpec Model 802
Fronius Symo Gen24 5.0-1 с BYD Battery-Box HVM: Modbus TCP порт 502, unit ID 1. Регистры SunSpec начинаются с 40001 (базовый адрес).
SunSpec Model 802 (Battery Base Model) добавляется после Model 103 (Inverter). Для динамического определения Model 802: сканировать список блоков SunSpec с базы. На практике для Fronius Gen24 с прошивкой 1.24.x регистры батареи начинаются примерно с 40331:
Fronius Gen24 SunSpec Model 802 – ключевые регистры
Register 40331: SunSpec Model 802 ID (value 802) Register 40333: Battery SOC (uint16, SF from register 40372) Register 40337: Battery instantaneous power (int16, W – positive=charging) Register 40341: Battery status (enum16: 1=off, 3=charging, 4=discharging, 7=fault) Register 40361: Battery SOC (float32 alternative, direct %)
Для производственного использования: шлюз MDT Modbus считывает регистр 40361 (2 регистра, float32 big-endian) для SOC и регистр 40337 (int16) для мощности. Привязка к групповым адресам KNX.
SMA Sunny Boy Storage + BYD: адреса регистров
SMA SBS6.0-10 с BYD Battery-Box: Modbus TCP порт 502, unit ID 3 (SMA обычно использует unit ID 3 для накопительных инверторов).
| Регистр | Описание | Тип |
|---|---|---|
| 30845-30846 | SOC батареи (0–100 %) | uint32 |
| 30851-30852 | Состояние здоровья батареи (0–100 %) | uint32 |
| 30775-30776 | Мощность заряда батареи (Вт – положительное=заряд, отрицательное=разряд) | int32 |
| 30843-30844 | Рабочий статус батареи (2291=пусто, 2292=заряд, 2293=разряд, 2294=полный) | uint32 |
Примечание: SMA использует тип uint32 (по 2 регистра) даже для процентных значений. Шлюз MDT Modbus: тип данных 'unsigned 32-bit integer', порядок байт 'big-endian', значение регистра SOC делить на 1 (уже в процентах, масштабирование не нужно).
Поток опроса Node-RED
Установите пакеты Node-RED: node-red-contrib-modbus (Modbus TCP polling). Структура потока:
Node-RED поток – SolarEdge BYD SOC и мощность в KNX
Inject (30s interval)
Modbus Read (server: 192.168.1.100, port 1502, unit 1,
FC3, start 62798, count 1, datatype INT)
Function: msg.payload = msg.payload[0]; return msg;
KNX-Classic Out (GA: 6/4/1, DPT 5.001 – Battery SOC %)
Second branch from inject (register 62794 – battery power):
Modbus Read (same server, start 62794, count 1, datatype INT)
Function:
var value = msg.payload[0];
if (value > 32767) { value = value - 65536; }
msg.payload = value / 1000;
return msg;
KNX-Classic Out (GA: 6/4/2, DPT 9.001 – Battery power kW,
positive = charging)Автоматизация самопотребления KNX
Логический контроллер ETS6 (MDT Logic Controller или Weinzierl IP 731): правило – если GA 6/4/1 (SOC батареи) выше 85 И GA 7/0/0 (экспорт PV, DPT 9.001) выше 0,5 кВт, активировать выход KNX GA 1/5/4 (нагрев воды, таймер 30 мин). Правило – если GA 6/4/1 (SOC) опускается ниже 20, деактивировать выход KNX GA 1/6/1 (разрешение зарядки EV, DPT 1.001). Гистерезис: SOC должен подняться выше 30 для повторного включения зарядки EV.
Обработка знаковых целых чисел: Регистр SolarEdge 62794 (мощность батареи) является знаковым 16-битным integer. При считывании как беззнакового значения некоторыми шлюзами мощность заряда отображается как большое положительное число (например, 65436 вместо -100Вт). Всегда настраивайте шлюз MDT SCN-MOD.02 или аналогичный на signed int16 для этого регистра, либо применяйте формулу вычитания (если значение больше 32767: вычесть 65536) в Node-RED или логическом контроллере.
Нужен щит KNX с интеграцией Modbus батареи BYD под ваш проект?
Мы разрабатываем щиты низкого напряжения с интеграцией Modbus батарей SolarEdge, Fronius и SMA, логикой самопотребления KNX и полной документацией – поставляем протестированными и готовыми к вводу в эксплуатацию на вашем объекте в Латвии.
Запросить предложение