1. Canal de comunicación
- Tipo de canal: TCP/IP
- Interfaz física: conexión mediante cable Ethernet RJ45 / conexión Wi-Fi
2. Comunicación TCP/IP
2.1 Configuración de la red
- Modo de red: obtención dinámica de direcciones IP mediante DHCP
- Modo de reserva: dirección IP estática configurada en la aplicación
En modo DHCP, tras el encendido, el dispositivo solicita automáticamente una dirección IP al servidor DHCP. Una vez obtenida la dirección, el dispositivo difunde su información a través de mDNS. El nombre del servicio de difusión es:
_nexblue_modbus._tcp.local
Los sistemas EMS compatibles con mDNS, como Home Assistant y Tibber, pueden detectarlo automáticamente.
2.2 Puerto de comunicación
2.3 Identificador de la unidad
- Valor por defecto: 200
- Rango configurable: 1–247
En Modbus TCP, el ID de unidad es un identificador lógico que se mantiene para garantizar la compatibilidad con RTU. Utiliza el mismo parámetro de configuración que la dirección de esclavo empleada en el modo RTU.
2.4 Definiciones de los registros
2.4.1 Tipos de registros
| Tipo de registro | Función | Código de función | Descripción |
| Registros de entrada | Leer registros de entrada | 0x04 | Registros de solo lectura que proporcionan mediciones o información de estado, como tensión, corriente, potencia, temperatura, energía acumulada, etc. |
| Registros de tenencia | Leer los registros de retención | 0x03 | Registros de lectura/escritura. El maestro puede leer la configuración actual, los límites actuales, el estado del modo, etc. |
| Registros de tenencia | Escribir en el registro de retención único | 0x06 | El maestro introduce un único parámetro de configuración o comando, como el ajuste de la corriente máxima o el inicio o la interrupción de la carga. |
| Registros de tenencia | Escribir en varios registros de retención | 0x10 | El maestro escribe varios registros consecutivos a la vez, lo que se utiliza para actualizaciones por lotes de la configuración o de grupos de parámetros estructurados. |
Estos cuatro son los códigos de función fundamentales reconocidos por las normas IEC 61131-3, EN 61107 y la especificación Modbus de la ISO, y son compatibles de forma predeterminada con casi todos los dispositivos maestros, PLC y sistemas EMS.
2.4.2 Planificación de direcciones de registro (mapa de direcciones)
| Principio | Descripción |
| Longitud | El campo de dirección de una trama Modbus es un entero sin signo de 16 bits. |
| División por capas | División por función: Identificación → A nivel de estación → Por conector. Mantén la lógica clara y fácil de ampliar. |
| Punto de partida común | Todos los registros utilizan direcciones lógicas. El direccionamiento lógico suele comenzar en 0. El documento muestra tanto el formato decimal como el hexadecimal. |
| Regla de alineación | Los datos de 32 bits deben comenzar en una dirección par para evitar cruzar los límites de los registros. |
| Espacio reservado para la ampliación | Cada área deja espacios libres para que en futuras versiones se puedan añadir campos sin afectar a la compatibilidad. |
| Codificación de caracteres | Cada registro tiene una longitud de 2 bytes. Las cadenas tienen una longitud fija y no se rellenan con 0x00 en los bytes no utilizados. |
| Orden de bytes/palabras | El orden de los bytes en un solo registro es «Big-Endian». Los datos de varios registros utilizan el orden de palabras «Little-Endian» DCBA. |
| Métodos de acceso | La entrada utiliza el código 0x04. Los registros de retención se leen con el código 0x03 y se escriben con el código 0x06 (una vez) o 0x10 (varias veces). |
2.4.3 Identificación, versión y hora (datos de entrada, 0x04)
| Dirección | Nombre | Tipo | Unidad | Acceso | Descripción |
| 0000–0007 / 0x0000–0x0007 | Marca | STRING(16) | — | RO | 2 bytes por registro, UTF-8/ASCII. |
| 0008–0015 / 0x0008–0x000F | Modelo | STRING(16) | — | RO | Modelo del dispositivo. |
| 0016–0027 / 0x0010–0x001B | Número de serie | STRING(24) | — | RO | Número de serie del dispositivo. |
| 0028–0035 / 0x001C–0x0023 | Versión del firmware | STRING(16) | — | RO | Por ejemplo: 04.00.19. |
| 0036 / 0x0024 | Versión de la tabla Modbus | UINT16 | — | RO | Número de versión de asignación, por ejemplo, 0x0100. |
| 0037 / 0x0025 | Número de conectores | UINT16 | — | RO | Número de conectores: 1 o 2. |
| 0038–0039 / 0x0026–0x0027 | Fecha | UINT32 | AAAAMMDD | RO | Alineación par de 32 bits. Ejemplo: 20251202. |
| 0040–0041 / 0x0028–0x0029 | Hora | UINT32 | HHMMSS | RO | Ejemplo: 155630 significa las 15:56:30. |
| 0042 / 0x002A | Zona horaria | UINT16 | minutos | RO | Ejemplo: UTC+2 → +120. |
| 0044 | Versión de hardware | STRING(16) | — | RO | Versión de hardware. |
| 0043–0099 | Reservado | — | — | — | Reservado para identificación futura, certificados, información de fabricación, etc. |
2.4.4 Estado y medición en tiempo real (Entrada, 0x04)
| Dirección | Nombre | Tipo | Unidad | Acceso | Descripción |
| 0100 / 0x0064 | Estado de Chargepoint | UINT16 | — | RO | - 0: Disponible
- 1: Preparación
- 2: Carga
- 3: EVSE suspendido
- 4: SuspendedEV
- 5: Acabado
- 6: Reservado
- 7: No disponible
- 8: Con fallo
|
| 0102–0103 / 0x0066–0x0067 | Nivel 1 actual | FLOAT32 | A | RO | Alineación par de 32 bits. |
| 0104–0105 / 0x0068–0x0069 | Nivel 2 actual | FLOAT32 | A | RO | — |
| 0106–0107 / 0x006A–0x006B | Nivel 3 actual | FLOAT32 | A | RO | — |
| 0108–0109 / 0x006C–0x006D | Tensión L1-N | FLOAT32 | V | RO | — |
| 0110–0111 / 0x006E–0x006F | Tensión L2-N | FLOAT32 | V | RO | — |
| 0112–0113 / 0x0070–0x0071 | Tensión L3-N | FLOAT32 | V | RO | — |
| 0114–0115 / 0x0072–0x0073 | Ángulo de fase L1 | FLOAT32 | ° | RO | Ángulo de fase con respecto a L1-N. |
| 0116–0117 / 0x0074–0x0075 | Ángulo de fase L2 | FLOAT32 | ° | RO | Ángulo de fase con respecto a L1-N. |
| 0118–0119 / 0x0076–0x0077 | Ángulo de fase L3 | FLOAT32 | ° | RO | Ángulo de fase con respecto a L1-N. |
| 0120–0121 / 0x0078–0x0079 | Potencia activa L1 | FLOAT32 | W | RO | — |
| 0122–0123 / 0x007A–0x007B | Potencia activa L2 | FLOAT32 | W | RO | — |
| 0124–0125 / 0x007C–0x007D | Potencia activa L3 | FLOAT32 | W | RO | — |
| 0126–0127 / 0x007E–0x007F | Potencia activa total | FLOAT32 | W | RO | — |
| 0128–0129 / 0x0080–0x0081 | Energía de sesión | FLOAT32 | kWh | RO | Sesión actual. |
| 0130–0133 / 0x0082–0x0085 | Energía de por vida | UINT64 | ¿Qué | RO | Energía acumulada. 64 bits, 4 registros. |
| 0134–0135 / 0x0086–0x0087 | Corriente de reserva | FLOAT32 | A | RO | Corriente de reserva configurada a través de NexBlue o la nube. |
| 0136–0137 / 0x0088–0x0089 | Corriente máxima de carga | FLOAT32 | A | RO | La corriente máxima de carga se configura a través de NexBlue o de la nube. |
| 0138 / 0x008A | Carga por fases | UINT16 | — | RO | - 0: Adaptativo
- 1: Monofásico forzado
- 2: Fuerza trifásica
|
| 0137–0399 / 0x0088–0x018F | Reservado | — | — | — | Reservado para tensión, factor de potencia, frecuencia, potencia por fase, etc. |
2.4.5 Control y seguridad (Holding, lectura 0x03 / escritura 0x06 o 0x10)
Notas: Si se produce un corte de corriente en el cargador, este volverá automáticamente a los valores predeterminados y habrá que volver a configurarlo.
| Dirección | Nombre | Tipo | Unidad | Acceso | Descripción |
| 1000–1001 / 0x03E8–0x03E9 | Límite de corriente | FLOAT32 | A | RW | Límite de corriente a nivel de estación. Valor predeterminado: 16 A. Rango: 0–32 A. |
| 1002–1003 / 0x03EA–0x03EB | Límite de reserva | FLOAT32 | A | RW | La corriente de desconexión de seguridad solo se puede ajustar entre 0 y 16. Los valores inferiores a 6 se consideran 0. |
| 1004–1005 / 0x03EC–0x03ED | Tiempo de espera de reserva | UINT32 | s | RW | Umbral de tiempo de espera de Heartbeat. Por defecto: 5 minutos. Mínimo: 30 segundos. Máximo: 30 minutos. |
| 1006 / 0x03EE | IF_START | UINT16 | — | RW | - Control de arranque/parada
- 0: PARAR
- 1: INICIO
|
| 1007 / 0x03EF | Modo de fase de ejecución | UINT16 | — | RW | Valores: - 0: Adaptativo
- 1: Monofásico forzado
- 2: Fuerza trifásica
Restricciones de conmutación: - Intervalo mínimo recomendado entre los cambios de fase: 10 minutos
- Máximo de 2 cambios de fase en cualquier periodo de 1 hora
- Máximo de 6 conmutaciones de fase durante una misma sesión de carga
|
| 1008-1999 | Reservado | — | — | — | Reservado para extensiones. |
2.4.6 Alarmas y errores (Error / Advertencia)
| Dirección | Nombre | Tipo | Unidad | Acceso | Descripción |
| 0400 / 0x0190 | Conjunto de bits de error | UINT16 | — | RO | - Bit 0: Tensión del CP anómala
- Bit 1: fuga en la línea de fase
- Bit 2: anomalía de corriente / sobrecorriente
- Bit 3: tensión anómala / sobretensión o subtensión
- Bit 4: temperatura anómala / alta o baja
- Bit 5: relé atascado
- Bit 6: Fallo en la autocomprobación del RCD
- Bit 7: Cortocircuito en el diodo CP
- Bit8: PEN abierto
- Bit9: fuga de PE
- Bit10: PE abierto
- Bit 11: PP anómalo
- Bits 12-15: reservados
|
| 0401 / 0x0191 | Conjunto de bits de advertencia | UINT16 | — | RO | - Bit 0: fallo en el chip del contador
- Bit 1: comunicación entre placas anómala
- Bit 2: Anomalía en la señal de radiofrecuencia (RF) del RFID
- Bit 3: 868 RF anómala
- Bit 4: Anomalía en el módulo 4G
- Bit 5: anomalía en la apertura de la tapa
- Bit 6: reservado
- Bit 7: Anomalía en la pérdida de fase del sistema TN
- Bit8: Sobrecorriente neutra de TI
- Bit9: anomalía en la red
- Bit10: Modo MID
- Bits 11-15: reservados
|
| 0402 / 0x0192 | Conjunto de bits en espera | UINT16 | — | RO | - Bit 0: modo de reserva debido a que el CT está desconectado
- Bit 1: modo de reserva debido a que la unidad principal está desconectada
- Bit2: en pausa debido a un error de baja gravedad / la corriente del perfil de carga es 0 a través de OCPP
- Bit3: el dispositivo de carga reduce la intensidad de la corriente durante la carga
- Bit4: se ha enviado la primera solicitud, pero el servidor no ha respondido
- Bit 5: protección contra cortes de suministro activa
- Bit 6: modo de reserva activado por Modbus
- Bits 6–15: reservados
|
Apéndice
Códigos de función
Un código de función en Modbus indica qué operación quiere realizar el maestro sobre el esclavo. Cada trama incluye un código de función de 1 byte.
| Hex | Significado | Objetivo |
| 0x01 | Bobinas de lectura | Salidas de bits |
| 0x02 | Leer entradas discretas | Entradas de bits |
| 0x03 | Leer los registros de tenencia | de 16 bits |
| 0x04 | Leer registros de entrada | de 16 bits |
| 0x05 | Escribir «Single Coil» | Bit |
| 0x06 | Escribir en el registro de tenencia única | de 16 bits |
| 0x0F | Escribir varias bobinas | Bit |
| 0x10 | Escribir en varios registros de retención | de 16 bits |
Resumen de los tipos de datos habituales de Modbus
| Tipo de datos | Registros utilizados | Ancho en bits | Tipo C | Significado y uso | Ejemplos típicos |
| UINT16 | 1 | de 16 bits | uint16_t | Entero sin signo | Códigos de estado, enumeraciones, contadores, número de conectores. |
| INT16 | 1 | de 16 bits | int16_t | Entero con signo | Temperatura, compensaciones, zona horaria. |
| UINT32 | 2 | de 32 bits | uint32_t | Entero largo sin signo | Marcas de tiempo, medición de energía, contadores de segundos. |
| INT32 | 2 | de 32 bits | int32_t | Entero largo con signo | Potencia, valores direccionales. |
| FLOAT32 | 2 | de 32 bits | flotar | Número flotante de precisión simple, IEEE 754. | Corriente, tensión, potencia, energía, etc. |
| UINT64 | 4 | 64 bits | uint64_t | Número entero muy grande | Energía total, medición acumulada. |
| STRING[n] | n/2 | n × 8 bits | char[] | Información del texto | Marca, modelo, número de serie, número de versión. |