---
title: "SolaX X3 Hybrid Ultra"
description: "Monitora stringhe FV, SOC batteria, tensione/frequenza di rete e controlla modalità ricarica sul SolaX X3-Ultra via Modbus RTU."
url: "https://taphome.com/it/compatibility/solax-hybrid-ultra-x3/"
language: it
lastmod: 2026-10-14
generator: hugo
ai:
  topics: ["modbus-rtu","inverter","solar","rs485","battery-storage","3-phase","hybrid-inverter","energy-monitoring","gen5"]
  questions: ["TapHome supporta l'inverter SolaX X3 Hybrid Ultra?","Come cablare RS-485 dalla porta COM 1 del SolaX X3-Ultra a TapHome?","Quali modelli SolaX X3-Ultra funzionano con il template TapHome?","Qual è il baud rate Modbus predefinito sul SolaX X3-Ultra?","Come leggere il SOC della batteria da un SolaX X3 Hybrid Ultra tramite Modbus RTU?","Perché PV3 e Batteria 2 SOC leggono zero sul mio SolaX X3-Ultra?"]
---

# SolaX X3 Hybrid Ultra

Comunicazione: Modbus RTU

- [Sito ufficiale di SolaX Power](https://www.solaxpower.com)
- [Pagina prodotto SolaX X3-Ultra](https://www.solaxpower.com/x3-ultra/)

## Guida all'integrazione

Il SolaX X3 Hybrid Ultra (Gen5) è un inverter ibrido fotovoltaico/batteria trifase con potenza nominale da 10 kW a 30 kW. Il template TapHome comunica con l'inverter tramite **Modbus RTU sulla porta COM 1 RS-485** (pin REMOTE_485A / REMOTE_485B) e implementa la mappa registri del protocollo SolaX Modbus V3.29. Legge la potenza delle stringhe FV, lo stato di carica e la temperatura della batteria, la tensione e la frequenza di rete trifase, i totali energetici cumulativi e giornalieri, la potenza di immissione dal contatore esterno, ed espone la modalità di ricarica, il SOC di carica notturna (autoconsumo) e il limite massimo di potenza di immissione in scrittura.

L'X3-Ultra **non supporta** Modbus TCP nativamente — il TCP è disponibile solo tramite un modulo di monitoraggio SolaX (Pocket WiFi 3.0, Pocket LAN o DataHub) che fa da bridge RTU a TCP sulla porta 502. Per installazioni remote TapHome può anche essere collegato tramite un gateway RS-485-Ethernet di terze parti (ad es. Waveshare, USR-DR302) configurato come Modbus RTU-over-TCP.

## Modelli

Il template TapHome copre l'intera serie X3-Ultra. I sensori PV3 e Batteria 2 SOC sono funzionali solo sulla variante a 3-MPPT / doppia batteria da 30 kW.

| Modello | Potenza AC nominale | Tracker MPPT | Note |
|---------|---------------------|--------------|------|
| X3-ULT-15K | 15 kW | 2 | 2-MPPT standard |
| X3-ULT-15KP | 15 kW | 3 | 3-MPPT (codice modello H3BC) |
| X3-ULT-19.9K | 19,9 kW | 2 | 2-MPPT standard |
| X3-ULT-20K | 20 kW | 2 | 2-MPPT standard (codice modello H3BD) |
| X3-ULT-20KP | 20 kW | 3 | 3-MPPT |
| X3-ULT-25K | 25 kW | 3 | Codice modello H3BF |
| X3-ULT-25KW | 25 kW | 3 | — |
| X3-ULT-30K | 30 kW | 3 | Doppia batteria, PV3 attivo (codice modello H3BG) |
| X3-ULT-10K-GLV | 10 kW | — | Variante a bassa tensione (GLV) |
| X3-ULT-15K-GLV | 15 kW | — | Variante a bassa tensione (GLV) |

Il codice modello può essere letto a runtime tramite l'attributo del modulo **Model** (registro H:0x000E, stringa ASCII di 4 caratteri).

## Ambito di compatibilità

Il template implementa il sottoinsieme del protocollo SolaX Modbus V3.29 più comunemente utilizzato per la gestione energetica domestica — 19 dispositivi, 2 attributi di servizio a livello di modulo e un'azione di servizio. Il protocollo completo espone molti più registri; le capacità non implementate più utili (potenza e corrente di rete per fase, tensione/corrente/potenza della batteria, stato BMS, tempo di funzionamento off-grid, controllo remoto della potenza, ecc.) potranno essere aggiunte in un futuro aggiornamento del template. Il template della community corretto nel portale TapHome aggiunge già il controllo remoto della potenza e scritture delle impostazioni eseguite solo quando il valore cambia — vedere Problemi noti del template ufficiale e Controllo remoto della potenza più avanti.

## Connessione hardware

L'X3-Ultra ha una sola **porta COM 1** multifunzione (connettore in stile RJ45 con fissaggio del cavo etichettato). Gli stessi pin fisici svolgono funzioni diverse a seconda della posizione etichettata sul fissaggio del cavo in cui si effettua il cablaggio. Per l'integrazione Modbus di terze parti utilizzare la posizione **RS485** — le linee **REMOTE_485A** e **REMOTE_485B**.

### Pinout della porta COM 1

![Assegnazione pin della porta COM 1 SolaX X3-Ultra per tutte e sei le posizioni etichettate (Parallel-1, Parallel-2, BMS-1, BMS-2, RS485, DRM)](https://taphome.com/images/compatibility/solax-hybrid-ultra-x3/com1-pinout_hu_4124a3cd9e8bc981.jpg)

Assegnazione pin della **posizione RS485** (l'unica posizione rilevante per TapHome):

| Pin | Segnale | Cablaggio TapHome |
|-----|---------|-------------------|
| **1** | **REMOTE_485A** | A+ / D+ |
| **2** | **REMOTE_485B** | B− / D− |
| 3 | PARALLEL_485AA | non utilizzare (solo accessori SolaX) |
| 4 | PARALLEL_485AA | non utilizzare (solo accessori SolaX) |
| 5 | PARALLEL_485BB | non utilizzare (solo accessori SolaX) |
| 6 | PARALLEL_485BB | non utilizzare (solo accessori SolaX) |
| **7** | **REMOTE_485A** | duplicato del pin 1 (per daisy-chain) |
| **8** | **REMOTE_485B** | duplicato del pin 2 (per daisy-chain) |

> [!WARNING]
> I pin 3–6 appartengono al canale PARALLEL_485 proprietario SolaX e sono riservati agli accessori SolaX (Adapter Box G2, EV-Charger, DataHub, inverter in parallelo). **Non** collegare un master Modbus di terze parti a questi pin.

> [!NOTE]
> I vecchi inverter SolaX (Gen4 X3-Hybrid) utilizzavano **pin 4 = 485A** e **pin 5 = 485B**. Il pinout della porta COM 1 dell'X3-Ultra è diverso — prima della crimpatura verificare sempre l'etichettatura del fissaggio del cavo sulla propria unità. Alcuni documenti della community fanno ancora riferimento al pinout Gen4 più vecchio.

### Cablaggio RS-485

![Installazione del terminale RJ45 nella posizione RS485 del fissaggio del cavo COM 1](https://taphome.com/images/compatibility/solax-hybrid-ultra-x3/wiring-rs485_hu_ac07cf89af382c1.jpg)

Regole di cablaggio dal manuale utente dell'X3-Ultra (sezione 8.6.4):

- **Tipo di cavo:** doppino intrecciato UTP Cat5 o Cat6 standard
- **Lunghezza massima:** **30 m** di cavo RS-485 tra l'inverter e il CCU TapHome
- **La polarità conta:** se non c'è comunicazione, scambiare A e B
- **Master Modbus singolo:** sul bus è ammesso un solo master. Se un modulo di monitoraggio SolaX condivide la linea, prevedere conflitti

Il fissaggio del cavo COM 1 ha posizioni etichettate dedicate per ogni canale — collegare il cavo Cat5/Cat6 nello slot etichettato **RS485** (non in Parallel-1, Parallel-2, BMS-1, BMS-2 o DRM).

### Opzioni di connessione

- **CCU Modbus RTU diretto:** collegare la coppia RS485 della porta COM 1 direttamente al CCU Modbus RTU di TapHome. Latenza minima, raccomandato per il controllo in tempo reale.
- **Gateway RS-485-Ethernet (Modbus RTU-over-TCP):** per installazioni in cui l'inverter è lontano dal TapHome Core, utilizzare un gateway Waveshare RS485-Ethernet, USR-DR302 o simile configurato come Modbus RTU-over-TCP sulla porta 502. Il parametro di importazione `IpAddress` del template lo permette.
- **SolaX Pocket WiFi 3.0 / Pocket LAN / DataHub (Modbus TCP):** se il modulo di monitoraggio SolaX è già installato, fa da bridge RTU a TCP sulla porta 502 con un ciclo di interrogazione di circa 1 secondo — più lento del RTU diretto e non raccomandato per loop di controllo in tempo reale.

## Configurazione

### Abilitazione della comunicazione Modbus sull'inverter

Sul display LCD dell'inverter navigare a:

```
Menu → Setting → Advance Setting → Modbus
```

Il menu Advanced Settings può richiedere una password installatore. Verificare o impostare quanto segue:

| Parametro | Default template TapHome | Default inverter | Intervallo |
|-----------|--------------------------|------------------|------------|
| Indirizzo Modbus (Slave ID) | 1 | 1 | 1–255 |
| Baud rate | 19200 | 19200 | 9600 / 19200 / 38400 / 57600 / 115200 |
| Parità | None | None | None / Odd / Even |
| Bit di dati | 8 | 8 | — |
| Bit di stop | 1 | 1 | 1 o 2 |

> [!WARNING]
> Il baud rate deve corrispondere tra inverter e TapHome. Il protocollo V3.29 specifica **19200** come default X3-Ultra; alcuni template SolaX e documentazione più vecchi menzionano ancora 9600. Se la comunicazione fallisce, controllare prima il baud rate.

L'inverter può anche esporre l'indirizzo slave Modbus tramite il registro holding `H:0x00AC` e il baud rate tramite il registro holding `H:0x00AD`.

### Parametri di importazione in TapHome

Quando si importa il template in TapHome, devono essere impostati due parametri:

| Parametro | Scopo |
|-----------|-------|
| **IpAddress** | Indirizzo IP del gateway RS-485-TCP (o del modulo di monitoraggio SolaX Pocket WiFi / LAN). Lasciare il valore predefinito se l'inverter è collegato direttamente al CCU Modbus RTU di TapHome. |
| **SlaveId** | Indirizzo slave Modbus dell'inverter (default `1`). Deve corrispondere all'impostazione Modbus Address dell'inverter. |

### Tempistica delle comunicazioni

Il protocollo SolaX Modbus richiede un intervallo minimo tra richieste successive e utilizza intervalli di interrogazione individuali per ciascun dispositivo nel template (da pochi secondi per tensione/frequenza di rete fino a 80 s per la temperatura della batteria). Non interrogare aggressivamente alcun dispositivo — l'inverter limita internamente le richieste.

## Funzionalità dei dispositivi

### Monitoraggio batteria

- **Batteria 1 SOC** — stato di carica della batteria primaria come ingresso analogico 0–1 (registro grezzo in unità di 1 %, diviso per 100 per l'intervallo TapHome 0–1)
- **Batteria 2 SOC** — stato di carica della seconda batteria, **funzionante solo sulla X3-ULT-30K** variante a doppia batteria; gli altri modelli leggono 0
- **Temperatura batteria** — temperatura del pacco batteria in °C, interrogata ogni 80 secondi

### Potenza solare FV

- **Potenza PV1 (est)** — potenza DC dalla stringa FV 1 in kW
- **Potenza PV2 (est)** — potenza DC dalla stringa FV 2 in kW
- **Potenza PV3 (ovest)** — potenza DC dalla stringa FV 3 in kW, **funzionante solo sui modelli a 3-MPPT** (vedi la tabella dei modelli); gli altri modelli leggono 0

I suffissi „est" / „ovest" sono una convenzione di denominazione direzionale ereditata dal template slovacco originale — il numero della stringa FV corrisponde all'ingresso MPPT fisico sull'inverter, non all'orientamento effettivo dell'array.

### Misurazione rete ed energia

- **Tensione di rete L1 / L2 / L3** — tensione di rete per fase in volt (registri `A:0x006A`, `A:0x006E`, `A:0x0072`)
- **Frequenza di rete L1 / L2 / L3** — frequenza di rete per fase in hertz (registri `A:0x006D`, `A:0x0071`, `A:0x0075`)
- **Potenza immessa in rete (contatore)** — pensata come potenza di immissione dal contatore SolaX esterno / CT, ma il template ufficiale legge il registro `A:0x0046` con l'ordine delle word errato (`Int32` invece di `LittleEndianInt32`), quindi il valore è privo di senso (ad esempio −7340,033 invece di −0,117 kW). Non è un alias della Potenza importazione / esportazione rete — utilizzare quel dispositivo oppure correggere lo script come indicato in Problemi noti del template ufficiale
- **Potenza importazione / esportazione rete** — la lettura corretta della potenza del contatore / CT (`A:0x0046`, `LittleEndianInt32`) in kW; positivo = esportazione, negativo = importazione
- **Produzione inverter giornaliera / attuale** — nel template ufficiale combina l'energia odierna dell'inverter (registro `A:0x0050`, un contatore giornaliero che si azzera ogni notte) con il registro `A:0x0002`, che SolaX documenta solo per i modelli monofase X1 — sull'X3-Ultra legge 0. Gli script corretti sono in Problemi noti del template ufficiale
- **Energia totale prodotta** — energia cumulativa totale fornita dalla porta AC dell'inverter alla rete, in kWh

### Controllo carica e immissione (scrivibili)

- **Modalità di ricarica** — modalità operativa del caricabatteria: Self Use, Feed-in Priority, Backup o Manual
- **SOC carica notturna (autoconsumo)** — target SOC superiore (10–100 %) per la carica della batteria dalla rete durante la notte in modalità autoconsumo
- **Limite max. potenza immissione** — potenza massima di esportazione consentita verso la rete **in kW** (non in percentuale): sui modelli X3 il registro conta a passi di 10 W e il template divide per 100

> [!WARNING]
> **Si applica il limite di scrittura EEprom** a tutti e tre i dispositivi scrivibili sopra (Modalità di ricarica → `SH:0x001F`, SOC carica notturna → `SH:0x0063`, Max potenza immissione → `SH:0x0042`). I registri sottostanti sono basati su EEprom con cicli di scrittura limitati — scritture frequenti (ogni pochi secondi in un loop di automazione) danneggiano permanentemente l'EEprom dell'inverter. Utilizzare solo modifiche manuali o scritture programmate a bassa frequenza.

### Attributi e azioni a livello di modulo

- **Modalità operativa** (attributo di servizio) — stato operativo dell'inverter come testo: Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby
- **Modello** (attributo di servizio) — codice modello dell'inverter come stringa ASCII a 4 caratteri (H3BC = 15K/15KP, H3BD = 19,9K/20K/20KP, H3BF = 25K, H3BG = 30K)
- **Sblocca admin** (azione di servizio) — scrive la costante `2014` in `SH:0x0000` per sbloccare le impostazioni avanzate dell'inverter (raramente necessario, solo per diagnostica)

### Rilevamento errori

Il ReadScript del modulo monitora il registro Modalità operativa (`A:0x0009`) e segnala un errore di sistema TapHome quando l'inverter entra nello stato 3 (Fault) o 4 (Permanent Fault). Due registri di errore vengono analizzati bit per bit:

- **Codici errore inverter** (32 bit, `A:0x0040`–`A:0x0041`) — 31 errori individuali tra cui errori di tensione/frequenza di rete, errori di tensione FV, errori della batteria, errori di isolamento, sovratemperatura, protezione da sovracorrente, errori di relè ed errori di comunicazione
- **Codici errore Manager** (16 bit, `A:0x0043`) — 11 bit di errore tra cui errori di tipo potenza, errori EEPROM, problemi sensore NTC, avvisi temperatura batteria, errori contatore ed errori ventola

I singoli errori appaiono come errori discreti nel registro di sistema TapHome, in modo che gli installatori possano individuare il sottosistema in errore senza dover leggere il display LCD dell'inverter.

## Problemi noti del template ufficiale

Il template TapHome ufficiale per l'X3-Ultra legge diversi registri in modo errato e scrive periodicamente un'impostazione (verificato rispetto al protocollo SolaX Modbus V3.29 e V001.02 e rispetto ai valori di impianti installati). Un modulo importato dal template ufficiale **non si aggiorna da solo** quando il template cambia. Correggere a mano gli script del modulo esistente e dei suoi dispositivi, oppure importare il template della community corretto dal portale TapHome: [SolaX X3-Ultra Hybrid Inverter — monitoring and power control](https://portal.taphome.com/portal/community/solax-x3-ultra-power-control-modbus-rtu) (accedere, scaricare l'XML e importarlo come nuovo modulo).

**[SolaX X3-Ultra Hybrid Inverter — monitoring and power control (Modbus RTU)](https://portal.taphome.com/it/portal/community/solax-x3-ultra-power-control-modbus-rtu)** — SolaX, Modbus RTU. SolaX X3-Ultra hybrid inverter over Modbus RTU — Energy Dashboard set, corrected readings, settings written only on change, remote AC power control for spot-price charging and discharging.

| Dove | Script ufficiale | Script corretto | Effetto dell'errore |
|------|------------------|-----------------|---------------------|
| Modulo — script di lettura | `var x3 := MODBUSR(A, 0x0040, Uint32);` | `var x3 := MODBUSR(A, 0x0040, LittleEndianUint32);` | Le due metà del codice di errore a 32 bit sono invertite: un errore nel bit 1 (Grid Lost Fault) viene segnalato come bit 17 (Bat Power Low). Parallel Fault (bit 21) e Hard Limit Fault (bit 22) non vengono segnalati affatto |
| Potenza immessa in rete (contatore) | `MODBUSR(A,0x0046, Int32)/1000` | `MODBUSR(A, 0x0048, LittleEndianUint32) / 100` — energia totale immessa in rete in kWh | La potenza è già letta correttamente da Potenza importazione / esportazione rete; questo dispositivo mostra un numero privo di senso. Energia totale prelevata dalla rete: `MODBUSR(A, 0x004A, LittleEndianUint32) / 100` |
| Produzione inverter giornaliera / attuale — consumo totale | `MODBUSR(A, 0x50, UInt16) /10` | `MODBUSR(A, 0x0094, LittleEndianUint32) / 10` | 0x0050 è un contatore giornaliero che scende a 0 ogni notte; 0x0094 è l'energia FV totale |
| Produzione inverter giornaliera / attuale — potenza istantanea | `MODBUSR(A,0x02, Int16)/1000` | `(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16) + MODBUSR(A, 0x0124, UInt16)) / 1000` | 0x0002 è la potenza di rete dei modelli monofase X1 e sull'X3-Ultra legge 0 |
| Temperatura batteria | `MODBUSR(A,0x0018, UInt16)` | `MODBUSR(A, 0x0018, Int16)` | Sotto 0 °C il template ufficiale mostra circa 65535 °C |
| SOC carica notturna (autoconsumo) — script di scrittura | `MODBUSW(SH, 0x0063,  Uint16, Le * 100)` con scrittura periodica attiva | `IF(MODBUSR(H, 0x0094, UInt16) != ROUND(Le * 100), MODBUSW(SH, 0x0063, Uint16, ROUND(Le * 100)));` | Il dispositivo ufficiale scrive il target di carica notturna nell'inverter a ogni interrogazione (circa ogni 55 s) — 0x0063 è un registro EEPROM con circa 1 milione di cicli di scrittura. Con lo script corretto scrive solo quando il valore cambia davvero |

Il registro `H:0x0094` è anche nel protocollo V3.29 lo stato di carica target della carica notturna (SelfUse_NightCharge_UpperSoC); la carica notturna dalla rete si attiva nel byte basso di `H:0x0093` (registro di scrittura `0x0062`).

## Controllo remoto della potenza

Il template della community corretto aggiunge il dispositivo **Remote control - AC power target**. Utilizza la modalità 1 del controllo remoto SolaX (VPP): un target positivo in kW fa assorbire potenza all'inverter sulla sua porta AC (carica la batteria, dalla rete se il FV non basta), un target negativo gli fa erogare potenza (scarica la batteria e ciò che la casa non consuma va in rete); 0 termina il controllo remoto. Se necessario, il template sblocca le impostazioni dell'inverter con la password predefinita 2014 e ripete il comando ogni 60 s. Il controllo remoto non si avvia finché l'inverter è nella modalità di lavoro Manual.

> [!WARNING]
> Nel suo protocollo SolaX non contrassegna i registri del controllo remoto (0x007C–0x0088) come registri EEPROM, ma non conferma per iscritto nemmeno il contrario. Questo template si basa sull'esperienza delle community di Home Assistant e openHAB, che scrivono questi registri a intervalli da pochi secondi a pochi minuti. Le impostazioni sopra sono registri EEPROM (contrassegnati con ★ da SolaX, circa 1 milione di cicli di scrittura): modificarle raramente e mai da automazioni frequenti — per caricare e scaricare in base ai prezzi spot utilizzare il target di potenza AC del controllo remoto.

## Risoluzione dei problemi

### Nessuna comunicazione con l'inverter

1. Verificare che il cablaggio RS-485 sia sui pin **REMOTE_485A / REMOTE_485B** (1+2 o 7+8 sulla posizione RS485 della COM 1), non sui pin PARALLEL_485 3–6
2. Verificare che il baud rate corrisponda tra inverter (`Menu → Setting → Advance Setting → Modbus`) e modulo TapHome — entrambi devono essere 19200 per impostazione predefinita
3. Confermare che lo Slave ID corrisponda (default `1`)
4. Verificare che solo **un** master Modbus sia collegato al bus RS-485 — Modbus non supporta multi-master
5. Scambiare i cavi A e B se la polarità del cavo è incerta
6. Confermare che il cavo non superi **30 m** di lunghezza totale RS-485

### PV3 o Batteria 2 SOC legge zero

Questi dispositivi sono funzionanti solo sull'**X3-ULT-30K** (variante 3-MPPT / doppia batteria). Sui modelli più piccoli i registri `A:0x0124` (potenza PV3) e `A:0x012D` (Batteria 2 SOC) restituiscono zero. Nascondere i dispositivi non utilizzati nell'interfaccia TapHome per installazioni non 30K.

### La temperatura della batteria legge un valore inaspettatamente alto

Il registro di temperatura della batteria (`A:0x0018`) viene letto come `UInt16` dal template ufficiale, ma il valore è con segno. Le temperature sotto lo zero (ad es. −1 °C) si arrotolano a grandi valori positivi (ad es. 65535). Modificare lo script in `MODBUSR(A, 0x0018, Int16)` — vedere Problemi noti del template ufficiale.

### Le scritture in Modalità di ricarica / SOC carica notturna / Max immissione non hanno effetto

Questi registri sono basati su EEprom e l'inverter limita le scritture per proteggere l'EEprom. Assicurarsi che le scritture siano infrequenti (manuali o pianificate, non in un loop di automazione stretto). Alcune versioni firmware richiedono inoltre che la Modalità di ricarica sia impostata su **Manual** (`3`) prima che certe sub-modalità di forza-carica / forza-scarica rispondano.

### Il Modbus TCP tramite modulo di monitoraggio SolaX è lento

Il Pocket WiFi 3.0 / Pocket LAN / DataHub fa da bridge RTU a TCP con un ciclo di interrogazione di circa 1 secondo e gestisce solo un client Modbus TCP alla volta. Se anche il monitoraggio SolaX Cloud sta estraendo dati, prevedere conflitti. Per il controllo in tempo reale (risposta in frequenza, peak shaving) utilizzare Modbus RTU diretto o un gateway RS-485-Ethernet di terze parti dedicato.

## Dispositivi disponibili 19

Questi dispositivi compaiono in TapHome dopo l'importazione.

SolaX X3 Hybrid Ultra Modulo

Attributi di servizio

|                    |                                                                                                                                                    |
|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Modalità operativa | Stato operativo dell'inverter — Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby |
| Modello            | Codice modello dell'inverter come stringa ASCII a 4 caratteri (H3BC = 15K/15KP, H3BD = 19,9K/20K/20KP, H3BF = 25K, H3BG = 30K)                     |

Azioni di servizio

|               |                                                                                                                                                  |
|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
| Sblocca admin | Scrive la costante 2014 nel registro SH:0x0000 per sbloccare le impostazioni avanzate dell'inverter — raramente necessario, solo per diagnostica |

Lettura (modulo)

```taphome
var reg := MODBUSR(A, 0x09, UInt16);
IF(reg = 3, ADDERROR("Run Mode Fault"));
IF(reg = 4, ADDERROR("Run Mode Permanent Fault"));
#error table  2-3 for x3
var x3 := MODBUSR(A, 0x0040, Uint32);
IF(GETBIT(x3, 0) = 1, ADDERROR("TZ Protect Fault"));
IF(GETBIT(x3, 1) = 1, ADDERROR("Grid Lost Fault"));
IF(GETBIT(x3, 2) = 1, ADDERROR("Grid Volt Fault"));
IF(GETBIT(x3, 3) = 1, ADDERROR("Grid Freq Fault"));
IF(GETBIT(x3, 4) = 1, ADDERROR("PV Volt Fault"));
IF(GETBIT(x3, 5) = 1, ADDERROR("Bus Volt Fault"));
IF(GETBIT(x3, 6) = 1, ADDERROR("Bat Volt Fault"));
IF(GETBIT(x3, 7) = 1, ADDERROR("AC10mins Volt Fault"));
IF(GETBIT(x3, 8) = 1, ADDERROR("DCI OCP Fault"));
IF(GETBIT(x3, 9) = 1, ADDERROR("DCV OCP Fault"));
IF(GETBIT(x3, 10) = 1, ADDERROR("SW OCP Fault"));
IF(GETBIT(x3, 11) = 1, ADDERROR("RC OCP Fault"));
IF(GETBIT(x3, 12) = 1, ADDERROR("Isolation Fault"));
IF(GETBIT(x3, 13) = 1, ADDERROR("Temp Over Fault"));
IF(GETBIT(x3, 14) = 1, ADDERROR("BatConnDir Fault"));
IF(GETBIT(x3, 15) = 1, ADDERROR("Off-grid Overload"));
IF(GETBIT(x3, 16) = 1, ADDERROR("Overload"));
IF(GETBIT(x3, 17) = 1, ADDERROR("Bat Power Low"));
IF(GETBIT(x3, 18) = 1, ADDERROR("BMS Lost"));
IF(GETBIT(x3, 19) = 1, ADDERROR("Fan Fault"));
IF(GETBIT(x3, 20) = 1, ADDERROR("Low Temp Fault"));
IF(GETBIT(x3, 23) = 1, ADDERROR("INV Volt Sample Fault"));
IF(GETBIT(x3, 24) = 1, ADDERROR("Inner Comm Fault"));
IF(GETBIT(x3, 25) = 1, ADDERROR("INV EEPROM Fault"));
IF(GETBIT(x3, 26) = 1, ADDERROR("RCD Fault"));
IF(GETBIT(x3, 27) = 1, ADDERROR("Grid Relay Fault"));
IF(GETBIT(x3, 28) = 1, ADDERROR("Off-grid Relay Fault"));
IF(GETBIT(x3, 29) = 1, ADDERROR("PV ConnDir Fault"));
IF(GETBIT(x3, 30) = 1, ADDERROR("Charger Relay Fault"));
IF(GETBIT(x3, 31) = 1, ADDERROR("Earth Relay Fault"));

#error 2-5 Manager error code
var err := MODBUSR(A, 0x0043, Uint16);
IF(GETBIT(err, 0) = 1, ADDERROR("Power Type Fault"));
IF(GETBIT(err, 1) = 1, ADDERROR("Port OC Warning"));
IF(GETBIT(err, 2) = 1, ADDERROR("Mgr EEPROM Fault"));
IF(GETBIT(err, 4) = 1, ADDERROR("NTC Sample Invalid"));
IF(GETBIT(err, 5) = 1, ADDERROR("Battery Temperature Low"));
IF(GETBIT(err, 6) = 1, ADDERROR("Battery Temperature High"));
IF(GETBIT(err, 9) = 1, ADDERROR("Meter Fault"));
IF(GETBIT(err, 10) = 1, ADDERROR("Bypass Relay Fault"));
IF(GETBIT(err, 11) = 1, ADDERROR("Fan 2 Fault"));
```

Attributi di servizio

Run Mode

```taphome
SWITCH(MODBUSR(A, 0x09, UInt16), 
0, "Waiting",
1, "Checking",
2, "Normal",
3, "Fault",
4, "Permanent Fault",
5, "Update",
6, "Off-grid waiting",
7, "Off-grid",
8, "Self Testing ",
9, "Idle",
10, "Standby",
"Other"
);
```

Model

```taphome
MODBUSR(H, 14, String, 4)
```

Azioni di servizio

Unlock admin

```taphome
MODBUSW(SH, 0x0000, Uint16, 2014);
```

SOC batteria 1 Ingresso analogico Solo lettura

Stato di carica della batteria primaria in percentuale (0–100%), visualizzato come ingresso analogico 0–1 in TapHome

Registro: A:0x001C UInt16 Unità: % numeric

Lettura livello ingresso

```taphome
MODBUSR(A, 0x1C, UInt16)/100
```

SOC batteria 2 Ingresso analogico Solo lettura

Stato di carica della seconda batteria in percentuale — funzionante solo nella variante X3-ULT-30K a doppia batteria; gli altri modelli leggono 0

Registro: A:0x012D UInt16 Unità: % numeric

Lettura livello ingresso

```taphome
MODBUSR(A, 0x012D, Uint16) / 100
```

Energia totale prodotta Variabile Solo lettura

Energia cumulativa totale fornita dalla porta AC dell'inverter alla rete, in kWh

Registro: A:0x0052 LittleEndianInt32 Unità: kWh numeric

Lettura

```taphome
MODBUSR(A, 0x52,LittleEndianInt32) / 10
```

Produzione inverter giornaliera / attuale Contatore elettrico Solo lettura

Template ufficiale: energia odierna dell'inverter (0x0050, si azzera ogni notte) e registro 0x0002, documentato solo per i modelli X1 e che sull'X3-Ultra legge 0; gli script corretti leggono l'energia FV totale (0x0094) e la potenza PV1 + PV2 + PV3

Registro: A:0x0050, A:0x0002 UInt16, Int16 Unità: kWh / kW numeric

Lettura consumo totale

```taphome
MODBUSR(A, 0x50, UInt16) /10
```

Lettura domanda

```taphome
MODBUSR(A,0x02, Int16)/1000
```

Potenza immessa in rete (contatore) Variabile Solo lettura

Il template ufficiale legge il registro di potenza del contatore / CT 0x0046 con l'ordine delle word errato (Int32), quindi il valore è privo di senso; utilizzare Potenza importazione / esportazione rete oppure modificare lo script nell'energia immessa in rete (0x0048, LittleEndianUint32, / 100)

Registro: A:0x0046 Int32 Unità: kW numeric

Lettura

```taphome
MODBUSR(A,0x0046, Int32)/1000
```

Frequenza di rete L1 Variabile Solo lettura

Registro: A:0x006D Int16 Unità: Hz numeric

Lettura

```taphome
MODBUSR(A, 0x006D, Int16)/100
```

Frequenza di rete L2 Variabile Solo lettura

Registro: A:0x0071 Int16 Unità: Hz numeric

Lettura

```taphome
MODBUSR(A,0x0071, Int16)/100
```

Frequenza di rete L3 Variabile Solo lettura

Registro: A:0x0075 Int16 Unità: Hz numeric

Lettura

```taphome
MODBUSR(A,0x0075, Int16)/100
```

Modalità di ricarica Interruttore multivalore Lettura e scrittura

Modalità operativa del caricabatterie — Self Use, Feed-in Priority, Backup o Manual. La scrittura è basata su EEprom: non modificare frequentemente da automazioni

Registro: H:0x008B → SH:0x001F UInt16 numeric

Valori / Stati: Self Use · Feedin Priority · Backup · Manual · Peak Shaving

Lettura stato interruttore

```taphome
MODBUSR(H, 0x008B, Uint16)
```

Scrittura stato interruttore

```taphome
MODBUSW(SH, 0x001F, uint16, Mu)
```

Tensione di rete L1 Variabile Solo lettura

Registro: A:0x006A Int16 Unità: V numeric

Lettura

```taphome
MODBUSR(A,0x006A, Int16)/10
```

Tensione di rete L2 Variabile Solo lettura

Registro: A:0x006E Int16 Unità: V numeric

Lettura

```taphome
MODBUSR(A, 0x006E, Int16)/10
```

Tensione di rete L3 Variabile Solo lettura

Registro: A:0x0072 Int16 Unità: V numeric

Lettura

```taphome
MODBUSR(A,0x0072, Int16)/10
```

Potenza importazione / esportazione rete Variabile Solo lettura

Potenza di immissione / consumo dalla rete in tempo reale dal contatore esterno (0x0046, letto correttamente come LittleEndianInt32); valori positivi indicano esportazione, valori negativi indicano importazione

Registro: A:0x0046 LittleEndianInt32 Unità: kW numeric

Lettura

```taphome
MODBUSR(A, 0x46,LittleEndianInt32)/1000
```

Potenza PV1 (est) Variabile Solo lettura

Potenza DC dalla stringa PV 1, tipicamente l'array rivolto a est nella nomenclatura originale del template slovacco

Registro: A:0x000A UInt16 Unità: kW numeric

Lettura

```taphome
MODBUSR(A,0x0a, UInt16)/1000
```

Potenza PV2 (est) Variabile Solo lettura

Potenza DC dalla stringa PV 2, tipicamente l'array rivolto a est nella nomenclatura originale del template slovacco

Registro: A:0x000B UInt16 Unità: kW numeric

Lettura

```taphome
MODBUSR(A,0x0b, UInt16)/1000
```

Potenza PV3 (ovest) Variabile Solo lettura

Potenza DC dalla stringa PV 3 — funzionante solo nella variante X3-ULT-30K a 3 MPPT; gli altri modelli leggono 0

Registro: A:0x0124 UInt16 Unità: kW numeric

Lettura

```taphome
MODBUSR(A, 0x0124, Uint16)/1000
```

SOC carica notturna (autoconsumo) Dimmer Lettura e scrittura

Target SOC superiore (10–100%) per la carica della batteria dalla rete durante la notte in modalità autoconsumo. La scrittura è basata su EEprom; il template ufficiale lo scrive a ogni interrogazione (circa ogni 55 s) — utilizzare lo script di scrittura che confronta prima con 0x0094

Registro: H:0x0094 → SH:0x0063 UInt16 Unità: % numeric

Lettura livello

```taphome
MODBUSR(H, 0x0094, Uint16) / 100
```

Scrittura livello

```taphome
MODBUSW(SH, 0x0063,  Uint16, Le * 100)
```

Temperatura batteria Sensore di temperatura Solo lettura

Registro: A:0x0018 UInt16 Unità: °C numeric

Lettura temperatura

```taphome
MODBUSR(A,0x0018, UInt16)
```

Limite max. potenza immissione Variabile Lettura e scrittura

Potenza massima di esportazione consentita verso la rete in kW (sui modelli X3 il registro conta a passi di 10 W). La scrittura è basata su EEprom: non modificare frequentemente da automazioni

Registro: H:0x00B6 → SH:0x0042 UInt16 Unità: kW numeric

Lettura

```taphome
MODBUSR(H, 0x00B6, Uint16)/100
```

Scrittura

```taphome
MODBUSW(SH, 0x0042, Uint16, Va*100)
```

**Connessione:** Modbus RTU • 19200 baud• 8N1 • Slave ID: $\[SlaveId]

Possibili miglioramenti (40)

- A:0x0017 BMS Connect State — 0=Disconnected, 1=Connected. Critical for battery health monitoring
- A:0x001A Grid Status — 0=On-grid, 1=Off-grid. Important for backup/off-grid scenarios
- A:0x0014, A:0x0015, A:0x0016 Battery Voltage / Current / Power — Battery 1 pack telemetry: 0.1V int16, 0.1A int16, 1W int16. Positive current/power = charge, negative = discharge
- A:0x0127, A:0x0128, A:0x0129 Battery 2 Voltage / Current / Power — Battery 2 pack telemetry. X3-ULT-30K only
- A:0x0131 Battery 2 Temperature — 1°C, int16. Battery 2 temperature. X3-ULT-30K only
- A:0x0008 Radiator Temperature — 1°C, int16. Inverter internal radiator/heatsink temperature
- A:0x0003, A:0x0004 PV1 / PV2 Voltage — 0.1V, uint16. Useful for string-level diagnostics
- A:0x0005, A:0x0006 PV1 / PV2 Current — 0.1A, uint16. Useful for string-level diagnostics
- A:0x0122, A:0x0123 PV3 Voltage / Current — 0.1V uint16 / 0.1A uint16. X3-ULT-30K only
- A:0x006B, A:0x006F, A:0x0073 Per-Phase Grid Current L1/L2/L3 — 0.1A, int16 each. Per-phase current for 3-phase monitoring
- A:0x006C, A:0x0070, A:0x0074 Per-Phase Grid Power L1/L2/L3 — 1W, int16 each. Per-phase grid power — essential for 3-phase load balancing
- A:0x0082–0x0087 Per-Phase Feed-in Power L1/L2/L3 (Meter) — 1W, int32 LE × 3 phases. Per-phase feed-in from meter/CT
- A:0x0048–0x0049 Feed-in Energy Total (Meter) — 0.01kWh, uint32 LE. Lifetime energy exported via meter
- A:0x004A–0x004B Consumed Energy Total (Meter) — 0.01kWh, uint32 LE. Lifetime energy consumed from grid via meter
- A:0x0094–0x0095 Solar Energy Total — 0.1kWh, uint32 LE. Cumulative PV production (all strings combined)
- A:0x0096 Solar Energy Today — 0.1kWh, uint16. Today's PV production
- A:0x0091, A:0x0092–0x0093 Charged Energy Today / Total — 0.1kWh, uint16 / uint32 LE. Energy charged to battery via inverter AC port
- A:0x001D–0x001E, A:0x0020 Battery Discharge Energy Today / Total — 0.1kWh, uint32 LE / uint16. Battery discharge energy
- A:0x0021–0x0022, A:0x0023 Battery Charge Energy Today / Total — 0.1kWh, uint32 LE / uint16. Battery charge energy
- A:0x00BA, A:0x00BB Battery Temp High / Low — 0.1°C, int16. Min/max battery cell temperatures
- A:0x00BC, A:0x00BD Cell Voltage High / Low — 0.001V, uint16. Min/max individual cell voltages — important for battery health
- A:0x00BE, A:0x00BF BMS User SOC / SOH — 1%, uint16. SOC and state-of-health as reported by BMS (may differ from A:0x001C)
- A:0x00B8, A:0x00B9 Meter 1 / Meter 2 Communication State — 0=Com Error, 1=Normal. Diagnostic for meter/CT connectivity
- A:0x0019 BDC Status — 0=discharge, 1=charge, 2=stop. Battery DC converter status
- A:0x008E–0x008F, A:0x0090 Off-grid Yield Total / Today — 0.1kWh, uint32 LE / uint16. Energy delivered in off-grid mode
- A:0x0088–0x008B On-grid / Off-grid Running Time — 0.1h, uint32 LE each. Lifetime runtime counters
- A:0x012F–0x0130 Inverter Total AC Power — 1W, int32. Sum of all 3 phases AC output. X3-ULT-30K only
- A:0x0042 Manager Error Code (as Value) — Note: register A:0x0043 is parsed in module readscript for bit-level fault decoding (11 manager fault bits). V3.29 protocol places Manager error at A:0x0042 and BMS error at A:0x0043 — template uses A:0x0043 as 'Manager error code' which may actually be BMS Warning Code (Table 2-6). Potential mismatch — verify
- Write SH:0x0020 Manual Mode — 0=Stop charge & discharge, 1=Force charge, 2=Force discharge. Requires Charger Use Mode = 3 (Manual)
- Write SH:0x0061 Self-Use Discharge Min SOC — 10–100%. Minimum SOC before discharge stops in Self-Use mode
- Write SH:0x0062 Self-Use Night Charge Enable — 0=Disable, 1=Enable night charging from grid. Currently always-on assumption in template — explicit enable would allow user toggle
- H:0x0093 Self-Use Discharge Min SOC (Read) — Readback of discharge min SOC limit
- H:0x008C Manual Mode Readback — 0=Stop, 1=Force charge, 2=Force discharge. Readback of current manual sub-mode
- H:0x008D Battery Type — 0=Lead Acid, 1=Lithium. Battery chemistry diagnostic
- H:0x0100–0x011F Modbus Power Control (Remote) — Active/reactive power targets, SOC targets, time-of-duration. Enables advanced energy management and grid services (peak shaving, FCR, etc.)
- A:0x0120, A:0x0121 BMS Relay State / Restart Flag — 0/1 each. BMS relay status and restart indicator
- H:0x001D Safety Code (Country Standard) — 0–39 enum. Grid safety standard (VDE0126, VDE4105, AS4777, G98/G99, EN50549, etc.) — useful for installation diagnostics
- H:0x0023 Power Limits Percent — 0–100%, uint16. Inverter output power limit
- H:0x00BA Inverter Power Type — Model variant code (15K/20K/25K/30K). Useful for runtime model detection
- H:0x0000–0x0006 Inverter Serial Number — 14-character ASCII string across 7 registers. Service attribute candidate

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app | Predefinito   |
|--------------------|---------------|
| Slave Id           | `1`           |
| IP address         | `192.168.1.0` |

## Fonti

- SolaX X1/X3-IES & X3-Ultra Modbus TCP & RTU Communication Protocol V3.29
  
  [www.gbc-solino.cz](https://www.gbc-solino.cz/files/uploads/FAQ%20SolaX/Hybrid-X1X3-IES-ULTRA-ModbusTCPRTU-V3.29.pdf) 2026-05-29
  
  [PDF](https://taphome.com/compatibility/devices/solax-hybrid-ultra-x3/manufacturer/Hybrid-X1X3-IES-ULTRA-ModbusTCPRTU-V3.29.pdf)
- SolaX X3-Ultra Series User Manual (Installation & Wiring)
  
  [www.solaxpower.com](https://www.solaxpower.com/uploads/file/x3-ultra-series-user-manual-en.pdf) 2026-05-29
  
  [PDF](https://taphome.com/compatibility/devices/solax-hybrid-ultra-x3/manufacturer/x3-ultra-series-user-manual-en.pdf)
- SolaX X3-Ultra Datasheet (Product Overview & Specs)
  
  [www.solaxpower.com](https://www.solaxpower.com/uploads/file/solax-x3-ultra-datasheet-en.pdf) 2026-05-29
  
  [PDF](https://taphome.com/compatibility/devices/solax-hybrid-ultra-x3/manufacturer/solax-x3-ultra-datasheet-en.pdf)
- Home Assistant SolaX Modbus Integration (X3-Ultra Gen5 Support)
  
  [github.com](https://github.com/wills106/homeassistant-solax-modbus) 2026-05-29
- SolaX KB: How to Get Device Data by Modbus TCP
  
  [kb.solaxpower.com](https://kb.solaxpower.com/solution/detail/ff8080818407e2a701840a22dec20032) 2026-05-29

I documenti del produttore sono © dei rispettivi proprietari. Sono forniti così come pubblicati dal produttore, solo a titolo informativo.

## Documentazione correlata

- [Modbus Integration](https://taphome.com/it/compatibility/modbus-guide/)
- [Modbus - Configurazione](https://taphome.com/it/docs/integration/modbus/)
- [Configurazione semplice utilizzando modelli](https://taphome.com/it/docs/integration/modbus/templates/)
- [Script Modbus e prefetch](https://taphome.com/it/docs/script/modbus-scripts/)
- [Funzioni Modbus](https://taphome.com/it/docs/script/modbus/)
- [Tipi di dati Modbus](https://taphome.com/it/docs/script/modbus-data-types/)

