Almacenamiento batería · BYD Battery-Box · Modbus TCP · KNX · 9 min de lectura

BYD Battery-Box HVM: SOC y potencia hacia KNX vía Modbus TCP inversor

Lectura del SOC y potencia de carga/descarga de la BYD Battery-Box HVM vía la interfaz Modbus TCP del inversor acoplado — registros SolarEdge StorEdge, Fronius SunSpec Model 802 y SMA Sunny Boy Storage. Flujo de polling Node-RED y mapeo KNX DPT para la automatización del autoconsumo.

Por qué BYD no tiene un puerto Modbus directo

BYD Battery-Box HVM (sistema de alta tensión 403,2 V, 2,76–22,1 kWh por stack) se comunica con el inversor mediante un protocolo propietario CAN-bus / EnergyLink en el puerto CAN entre la batería y el inversor. BYD no expone un puerto Modbus TCP o RS485 accesible por el usuario en la propia batería. Todos los datos de la batería deben leerse indirectamente a través del inversor socio certificado.

SolarEdge StorEdge + BYD: mapa de registros

SolarEdge SE5K-RWS00BNN4 (StorEdge) con BYD Battery-Box HVM: Modbus TCP puerto 1502, unit ID 1.

Registros holding específicos de la batería (FC3, uint16 / int16):

RegistroDescripciónTipo / Escala
62784 (0xF540)Temperatura media batería 1int16, °C x10
62786 (0xF542)Tensión DC batería 1uint16, V x100
62794 (0xF54A)Potencia instantánea batería 1int16, W — positivo=carga, negativo=descarga
62798 (0xF54E)Estado de carga batería 1 (SOC)uint16, %
62800 (0xF550)Estado de salud batería 1 (SOH)uint16, %
62852 (0xF584)Máscara de bits estado batería 1uint16: bit 3=carga, bit 4=descarga, bit 11=fallo

Mapeo KNX: el registro 62794 (int16, W) dividido por 1000 corresponde a KNX DPT 9.001 (potencia batería kW), el registro 62798 a KNX DPT 5.001 (SOC %). Nota: el registro 62794 es un entero con signo — la pasarela MDT Modbus debe configurarse con el tipo de dato signed int16 para este registro.

Fronius Symo Gen24 + BYD: SunSpec Model 802

Fronius Symo Gen24 5.0-1 con BYD Battery-Box HVM: Modbus TCP puerto 502, unit ID 1. Los registros SunSpec comienzan en 40001 (dirección base).

SunSpec Model 802 (Battery Base Model) se añade después del Model 103 (Inverter). Para localizar dinámicamente el Model 802: escanear la lista de bloques SunSpec desde la base. En la práctica para Fronius Gen24 con firmware 1.24.x, los registros de batería comienzan aproximadamente en 40331:

Fronius Gen24 SunSpec Model 802 — registros clave

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 %)

Para uso en producción: la pasarela MDT Modbus lee el registro 40361 (2 registros, float32 big-endian) para el SOC y el registro 40337 (int16) para la potencia. Mapeo a las direcciones de grupo KNX.

SMA Sunny Boy Storage + BYD: direcciones de registros

SMA SBS6.0-10 con BYD Battery-Box: Modbus TCP puerto 502, unit ID 3 (SMA utiliza típicamente unit ID 3 para inversores de almacenamiento).

RegistroDescripciónTipo
30845-30846SOC batería (0–100 %)uint32
30851-30852Estado de salud batería (0–100 %)uint32
30775-30776Potencia de carga batería (W — positivo=carga, negativo=descarga)int32
30843-30844Estado operativo batería (2291=vacía, 2292=carga, 2293=descarga, 2294=llena)uint32

Nota: SMA utiliza tipos uint32 (2 registros cada uno) incluso para valores porcentuales. Pasarela MDT Modbus: tipo de dato 'unsigned 32-bit integer', orden de bytes 'big-endian', dividir el valor del registro SOC por 1 (ya en porcentaje, sin escala necesaria).

Flujo de polling Node-RED

Instalar paquetes Node-RED: node-red-contrib-modbus (polling Modbus TCP). Estructura del flujo:

Flujo Node-RED — SolarEdge BYD SOC y potencia hacia 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)

Automatización del autoconsumo KNX

Controlador lógico ETS6 (MDT Logic Controller o Weinzierl IP 731): Regla — si GA 6/4/1 (SOC batería) está por encima de 85 Y GA 7/0/0 (exportación PV, DPT 9.001) está por encima de 0,5 kW, activar salida KNX GA 1/5/4 (boost ACS, temporizador 30 min). Regla — si GA 6/4/1 (SOC) cae por debajo de 20, desactivar salida KNX GA 1/6/1 (habilitación carga VE, DPT 1.001). Histéresis: el SOC debe subir por encima de 30 para volver a habilitar la carga VE.

Manejo de enteros con signo: El registro SolarEdge 62794 (potencia batería) es un entero de 16 bits con signo. Cuando algunas pasarelas lo leen como valor sin signo, la potencia de carga aparece como un número positivo grande (p. ej. 65436 en lugar de -100W). Siempre configurar la pasarela MDT SCN-MOD.02 o equivalente en signed int16 para este registro, o aplicar la fórmula de sustracción (si el valor supera 32767: restar 65536) en Node-RED o en el controlador lógico.

¿Necesitan un cuadro KNX con integración Modbus batería BYD fabricado según especificación?

Diseñamos cuadros de baja tensión con integración Modbus batería SolarEdge, Fronius y SMA, lógica de autoconsumo KNX y documentación completa de puesta en marcha — entregados probados y verificados en su instalación.

Solicitar presupuesto →
Cargando...
Volver arriba