1. Canale di comunicazione
- Tipo di canale: TCP/IP
- Interfaccia fisica: connessione tramite cavo Ethernet RJ45 / connessione Wi-Fi
2. Comunicazione TCP/IP
2.1 Configurazione della rete
- Modalità di rete: acquisizione dinamica dell'indirizzo IP tramite DHCP
- Modalità di riserva: IP statico configurato nell'app
In modalità DHCP, all'accensione il dispositivo richiede automaticamente un indirizzo IP al server DHCP. Una volta ottenuto l'indirizzo, il dispositivo trasmette le proprie informazioni tramite mDNS. Il nome del servizio trasmesso è:
_nexblue_modbus._tcp.local
Questo può essere rilevato automaticamente dai sistemi EMS che supportano mDNS, come Home Assistant e Tibber.
2.2 Porta di comunicazione
2.3 ID unità
- Valore predefinito: 200
- Intervallo configurabile: 1–247
In Modbus TCP, l'ID unità è un identificatore logico mantenuto per garantire la compatibilità con la modalità RTU. Utilizza lo stesso parametro di configurazione dell'indirizzo slave utilizzato in modalità RTU.
2.4 Definizioni dei registri
2.4.1 Tipi di registro
| Tipo di registrazione | Funzione | Codice funzione | Descrizione |
| Registri di ingresso | Leggi i registri di ingresso | 0x04 | Registri di sola lettura che restituiscono valori di misura o informazioni di stato quali tensione, corrente, potenza, temperatura, energia cumulativa, ecc. |
| Registri di detenzione | Leggi i registri di mantenimento | 0x03 | Registri di lettura/scrittura. Il master può leggere la configurazione corrente, i limiti di corrente, lo stato della modalità, ecc. |
| Registri di detenzione | Scrivere nel registro di temporanea singola | 0x06 | Il master inserisce un singolo parametro di configurazione o comando, come l'impostazione della corrente massima o l'avvio/interruzione della ricarica. |
| Registri di detenzione | Scrivere su più registri di temporizzazione | 0x10 | Il master scrive contemporaneamente più registri consecutivi; questa operazione viene utilizzata per gli aggiornamenti in batch della configurazione o di gruppi di parametri strutturati. |
Questi quattro sono i codici funzione fondamentali riconosciuti dalle norme IEC 61131-3, EN 61107 e dalla specifica ISO Modbus, e sono supportati di default da quasi tutti i master, i PLC e i sistemi EMS.
2.4.2 Pianificazione degli indirizzi di registro (mappa degli indirizzi)
| Principio | Descrizione |
| Lunghezza | Il campo dell'indirizzo in un frame Modbus è un numero intero a 16 bit senza segno. |
| Partizionamento a livelli | Suddivisione per funzione: Identificazione → A livello di stazione → Per connettore. Mantenere la logica chiara e facilmente estendibile. |
| Punto di partenza comune | Tutti i registri utilizzano indirizzi logici. L'indirizzamento logico inizia in genere da 0. Il documento riporta sia il formato decimale che quello esadecimale. |
| Regola di allineamento | I dati a 32 bit devono iniziare da un indirizzo pari per evitare di superare i limiti dei registri. |
| Spazio riservato all'espansione | Ogni area prevede degli spazi vuoti in modo che le versioni future possano aggiungere campi senza compromettere la compatibilità. |
| Codifica dei caratteri | Ogni registro occupa 2 byte. Le stringhe hanno lunghezza fissa e non vengono riempite con 0x00 per i byte non utilizzati. |
| Ordine dei byte/delle parole | L'ordine dei byte per i registri singoli è Big-Endian. I dati multi-registro utilizzano l'ordine delle parole Little-Endian DCBA. |
| Metodi di accesso | L'input utilizza il codice 0x04. I registri di mantenimento vengono letti con il codice 0x03 e scritti con il codice 0x06 (singolo) o 0x10 (multiplo). |
2.4.3 Identificazione, versione e ora (dati in ingresso, 0x04)
| Indirizzo | Nome | Tipo | Unità | Accesso | Descrizione |
| 0000–0007 / 0x0000–0x0007 | Marchio | STRING(16) | — | RO | 2 byte per registro, UTF-8/ASCII. |
| 0008–0015 / 0x0008–0x000F | Modello | STRING(16) | — | RO | Modello del dispositivo. |
| 0016–0027 / 0x0010–0x001B | Numero di serie | STRING(24) | — | RO | Numero di serie del dispositivo. |
| 0028–0035 / 0x001C–0x0023 | Versione del firmware | STRING(16) | — | RO | Ad esempio: 04.00.19. |
| 0036 / 0x0024 | Versione tabella Modbus | UINT16 | — | RO | Numero di versione di mappatura, ad esempio 0x0100. |
| 0037 / 0x0025 | Numero di connettori | UINT16 | — | RO | Numero di connettori: 1 o 2. |
| 0038–0039 / 0x0026–0x0027 | Data | UINT32 | AAAAMMGG | RO | Allineamento pari a 32 bit. Esempio: 20251202. |
| 0040–0041 / 0x0028–0x0029 | Ora | UINT32 | HHMMSS | RO | Esempio: 155630 significa 15:56:30. |
| 0042 / 0x002A | Fuso orario | UINT16 | minuti | RO | Esempio: UTC+2 → +120. |
| 0044 | Versione hardware | STRING(16) | — | RO | Versione hardware. |
| 0043–0099 | Riservato | — | — | — | Riservato a future identificazioni, certificati, informazioni di produzione, ecc. |
2.4.4 Stato e misurazione in tempo reale (Ingresso, 0x04)
| Indirizzo | Nome | Tipo | Unità | Accesso | Descrizione |
| 0100 / 0x0064 | Stato di Chargepoint | UINT16 | — | RO | - 0: Disponibile
- 1: Preparazione
- 2: Ricarica
- 3: EVSE sospeso
- 4: SuspendedEV
- 5: Rifinitura
- 6: Riservato
- 7: Non disponibile
- 8: Difettoso
|
| 0102–0103 / 0x0066–0x0067 | L1 attuale | FLOAT32 | A | RO | Allineamento pari a 32 bit. |
| 0104–0105 / 0x0068–0x0069 | L2 attuale | FLOAT32 | A | RO | — |
| 0106–0107 / 0x006A–0x006B | L3 attuale | FLOAT32 | A | RO | — |
| 0108–0109 / 0x006C–0x006D | Tensione L1-N | FLOAT32 | V | RO | — |
| 0110–0111 / 0x006E–0x006F | Tensione L2-N | FLOAT32 | V | RO | — |
| 0112–0113 / 0x0070–0x0071 | Tensione L3-N | FLOAT32 | V | RO | — |
| 0114–0115 / 0x0072–0x0073 | Angolo di fase L1 | FLOAT32 | ° | RO | Angolo di fase riferito a L1-N. |
| 0116–0117 / 0x0074–0x0075 | Angolo di fase L2 | FLOAT32 | ° | RO | Angolo di fase riferito a L1-N. |
| 0118–0119 / 0x0076–0x0077 | Angolo di fase L3 | FLOAT32 | ° | RO | Angolo di fase riferito a L1-N. |
| 0120–0121 / 0x0078–0x0079 | Potenza attiva L1 | FLOAT32 | W | RO | — |
| 0122–0123 / 0x007A–0x007B | Potenza attiva L2 | FLOAT32 | W | RO | — |
| 0124–0125 / 0x007C–0x007D | Potenza attiva L3 | FLOAT32 | W | RO | — |
| 0126–0127 / 0x007E–0x007F | Potenza attiva totale | FLOAT32 | W | RO | — |
| 0128–0129 / 0x0080–0x0081 | Energia di sessione | FLOAT32 | kWh | RO | Sessione corrente. |
| 0130–0133 / 0x0082–0x0085 | Energia per tutta la vita | UINT64 | Wh | RO | Energia cumulativa. 64 bit, 4 registri. |
| 0134–0135 / 0x0086–0x0087 | Corrente di riserva | FLOAT32 | A | RO | Corrente di riserva impostata tramite NexBlue o il cloud. |
| 0136–0137 / 0x0088–0x0089 | Corrente massima di carica | FLOAT32 | A | RO | Corrente massima di ricarica impostabile tramite NexBlue o il cloud. |
| 0138 / 0x008A | Ricarica per fasi | UINT16 | — | RO | - 0: Adattivo
- 1: Forza monofase
- 2: Forza trifase
|
| 0137–0399 / 0x0088–0x018F | Riservato | — | — | — | Riservato a tensione, fattore di potenza, frequenza, potenza per fase, ecc. |
2.4.5 Controllo e sicurezza (Holding, lettura 0x03 / scrittura 0x06 o 0x10)
Note: se l'alimentazione CA del caricabatterie subisce un'interruzione, i valori torneranno automaticamente a quelli predefiniti e dovranno essere reimpostati.
| Indirizzo | Nome | Tipo | Unità | Accesso | Descrizione |
| 1000–1001 / 0x03E8–0x03E9 | Limite di corrente | FLOAT32 | A | RW | Limite di corrente a livello di stazione. Impostazione predefinita: 16 A. Intervallo: 0–32 A. |
| 1002–1003 / 0x03EA–0x03EB | Limite di riserva | FLOAT32 | A | RW | La corrente di fallback di disconnessione può essere impostata solo su valori compresi tra 0 e 16. I valori inferiori a 6 vengono considerati pari a 0. |
| 1004–1005 / 0x03EC–0x03ED | Timeout di fallback | UINT32 | s | RW | Soglia di timeout dell'heartbeat. Impostazione predefinita: 5 minuti. Minimo: 30 secondi. Massimo: 30 minuti. |
| 1006 / 0x03EE | IF_START | UINT16 | — | RW | - Controllo Start/Stop
- 0: STOP
- 1: INIZIO
|
| 1007 / 0x03EF | Modalità "Runtime Phase" | UINT16 | — | RW | Valori: - 0: Adattivo
- 1: Forza monofase
- 2: Forza trifase
Vincoli di commutazione: - Intervallo minimo consigliato tra i cambi di fase: 10 minuti
- Massimo 2 commutazioni di fase in un qualsiasi periodo di 1 ora
- Massimo 6 commutazioni di fase durante una singola sessione di ricarica
|
| 1008–1999 | Riservato | — | — | — | Riservato alle estensioni. |
2.4.6 Allarmi ed errori (Errore / Avviso)
| Indirizzo | Nome | Tipo | Unità | Accesso | Descrizione |
| 0400 / 0x0190 | Set di bit di errore | UINT16 | — | RO | - Bit 0: tensione CP anomala
- Bit 1: dispersione sulla linea di fase
- Bit 2: anomalia di corrente / sovracorrente
- Bit 3: tensione anomala / sovratensione o sottotensione
- Bit 4: temperatura anomala / alta o bassa
- Bit 5: relè bloccato
- Bit 6: Autotest dell'RCD non superato
- Bit 7: cortocircuito del diodo CP
- Bit 8: PEN aperto
- Bit9: perdita di PE
- Bit10: PE aperto
- Bit11: PP anomalo
- Bit 12–15: riservati
|
| 0401 / 0x0191 | Set di bit di avviso | UINT16 | — | RO | - Bit 0: anomalia del chip del contatore
- Bit 1: comunicazione tra schede anomala
- Bit 2: Anomalia RF RFID
- Bit 3: 868 RF anomalo
- Bit 4: anomalia del modulo 4G
- Bit5: anomalia nell'apertura del coperchio
- Bit 6: riservato
- Bit7: Anomalia nella perdita di fase del sistema TN
- Bit 8: sovracorrente IT neutra
- Bit9: anomalia della rete
- Bit10: modalità MID
- Bit 11–15: riservati
|
| 0402 / 0x0192 | Set di bit in attesa | UINT16 | — | RO | - Bit 0: passaggio alla modalità di riserva a causa del malfunzionamento del CT
- Bit 1: passaggio alla modalità di riserva a causa della disconnessione dell'unità principale
- Bit2: in pausa a causa di un errore di bassa gravità / la corrente del profilo di ricarica è pari a 0 tramite OCPP
- Bit3: l'host riduce la corrente durante la ricarica
- Bit4: prima richiesta inviata, ma l'host non ha risposto
- Bit 5: protezione contro il distacco di carico attiva
- Bit 6: fallback attivato da Modbus
- Bit 6–15: riservati
|
Appendice
Codici funzione
Un codice funzione in Modbus indica quale operazione il master intende eseguire sullo slave. Ogni frame include un codice funzione di 1 byte.
| Esagono | Significato | Obiettivo |
| 0x01 | Lire le bobine | Uscite bit |
| 0x02 | Leggi gli ingressi discreti | Ingressi in bit |
| 0x03 | Leggi i registri di detenzione | a 16 bit |
| 0x04 | Leggi i registri di ingresso | a 16 bit |
| 0x05 | Scrivi "Single Coil" | Bit |
| 0x06 | Scrivi nel registro di detenzione singolo | a 16 bit |
| 0x0F | Scrivere più bobine | Bit |
| 0x10 | Scrivere su più registri di accumulo | a 16 bit |
Riepilogo dei tipi di dati Modbus più comuni
| Tipo di dati | Registri utilizzati | Larghezza in bit | Tipo C | Significato e uso | Esempi tipici |
| UINT16 | 1 | a 16 bit | uint16_t | Intero senza segno | Codici di stato, enumerazioni, contatori, numero di connettori. |
| INT16 | 1 | a 16 bit | int16_t | Intero con segno | Temperatura, valori di compensazione, fuso orario. |
| UINT32 | 2 | a 32 bit | uint32_t | Intero lungo non firmato | Marcatori temporali, contatori di energia, contatori di secondi. |
| INT32 | 2 | a 32 bit | int32_t | Intero lungo con segno | Potenza, valori direzionali. |
| FLOAT32 | 2 | a 32 bit | float | Numero in virgola mobile a precisione singola, IEEE 754. | Corrente, tensione, potenza, energia, ecc. |
| UINT64 | 4 | a 64 bit | uint64_t | Numero intero molto grande | Energia totale, conteggio cumulativo. |
| STRING[n] | n/2 | n × 8 bit | char[] | Informazioni sul testo | Marca, modello, numero di serie, numero di versione. |