TapHome

SolaX X3 Hybrid Ultra

Modbus RTU
Inviato da
Ultimo aggiornamento: 10. 2026
SolaX X3 Hybrid Ultra

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.

ModelloPotenza AC nominaleTracker MPPTNote
X3-ULT-15K15 kW22-MPPT standard
X3-ULT-15KP15 kW33-MPPT (codice modello H3BC)
X3-ULT-19.9K19,9 kW22-MPPT standard
X3-ULT-20K20 kW22-MPPT standard (codice modello H3BD)
X3-ULT-20KP20 kW33-MPPT
X3-ULT-25K25 kW3Codice modello H3BF
X3-ULT-25KW25 kW3—
X3-ULT-30K30 kW3Doppia batteria, PV3 attivo (codice modello H3BG)
X3-ULT-10K-GLV10 kW—Variante a bassa tensione (GLV)
X3-ULT-15K-GLV15 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)

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

PinSegnaleCablaggio TapHome
1REMOTE_485AA+ / D+
2REMOTE_485BB− / D−
3PARALLEL_485AAnon utilizzare (solo accessori SolaX)
4PARALLEL_485AAnon utilizzare (solo accessori SolaX)
5PARALLEL_485BBnon utilizzare (solo accessori SolaX)
6PARALLEL_485BBnon utilizzare (solo accessori SolaX)
7REMOTE_485Aduplicato del pin 1 (per daisy-chain)
8REMOTE_485Bduplicato del pin 2 (per daisy-chain)

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.

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

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:

1
Menu → Setting → Advance Setting → Modbus

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

ParametroDefault template TapHomeDefault inverterIntervallo
Indirizzo Modbus (Slave ID)111–255
Baud rate19200192009600 / 19200 / 38400 / 57600 / 115200
ParitàNoneNoneNone / Odd / Even
Bit di dati88—
Bit di stop111 o 2

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:

ParametroScopo
IpAddressIndirizzo 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.
SlaveIdIndirizzo 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

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 (accedere, scaricare l’XML e importarlo come nuovo modulo).

DoveScript ufficialeScript correttoEffetto dell’errore
Modulo — script di letturavar 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)/1000MODBUSR(A, 0x0048, LittleEndianUint32) / 100 — energia totale immessa in rete in kWhLa 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 totaleMODBUSR(A, 0x50, UInt16) /10MODBUSR(A, 0x0094, LittleEndianUint32) / 100x0050 è un contatore giornaliero che scende a 0 ogni notte; 0x0094 è l’energia FV totale
Produzione inverter giornaliera / attuale — potenza istantaneaMODBUSR(A,0x02, Int16)/1000(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16) + MODBUSR(A, 0x0124, UInt16)) / 10000x0002 è la potenza di rete dei modelli monofase X1 e sull’X3-Ultra legge 0
Temperatura batteriaMODBUSR(A,0x0018, UInt16)MODBUSR(A, 0x0018, Int16)Sotto 0 °C il template ufficiale mostra circa 65535 °C
SOC carica notturna (autoconsumo) — script di scritturaMODBUSW(SH, 0x0063, Uint16, Le * 100) con scrittura periodica attivaIF(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.

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

SolaX X3 Hybrid Ultra Modulo
Attributi di servizio
Modalità operativaStato operativo dell'inverter — Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby
ModelloCodice 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 adminScrive la costante 2014 nel registro SH:0x0000 per sbloccare le impostazioni avanzate dell'inverter — raramente necessario, solo per diagnostica

FVE SOLAX Hybrid Ultra

Lettura (modulo)
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
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
MODBUSR(H, 14, String, 4)
Azioni di servizio
Unlock admin
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

SOC batteria 1

Lettura livello ingresso
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

SOC batteria 2

Lettura livello ingresso
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

Energia totale prodotta

Lettura
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

Produzione inverter giornaliera / attuale

Lettura consumo totale
MODBUSR(A, 0x50, UInt16) /10
Lettura domanda
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

Potenza immessa in rete (contatore)

Lettura
MODBUSR(A,0x0046, Int32)/1000
Frequenza di rete L1 Variabile Solo lettura
Registro: A:0x006D Int16 Unità: Hz numeric

Frequenza di rete L1

Lettura
MODBUSR(A, 0x006D, Int16)/100
Frequenza di rete L2 Variabile Solo lettura
Registro: A:0x0071 Int16 Unità: Hz numeric

Frequenza di rete L2

Lettura
MODBUSR(A,0x0071, Int16)/100
Frequenza di rete L3 Variabile Solo lettura
Registro: A:0x0075 Int16 Unità: Hz numeric

Frequenza di rete L3

Lettura
MODBUSR(A,0x0075, Int16)/100
Modalità di ricarica Interruttore multivalore

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: ON · OFF

Modalità di ricarica

Lettura stato interruttore
MODBUSR(H, 0x008B, Uint16)
Scrittura stato interruttore
MODBUSW(SH, 0x001F, uint16, Mu)
Tensione di rete L1 Variabile Solo lettura
Registro: A:0x006A Int16 Unità: V numeric

Tensione di rete L1

Lettura
MODBUSR(A,0x006A, Int16)/10
Tensione di rete L2 Variabile Solo lettura
Registro: A:0x006E Int16 Unità: V numeric

Tensione di rete L2

Lettura
MODBUSR(A, 0x006E, Int16)/10
Tensione di rete L3 Variabile Solo lettura
Registro: A:0x0072 Int16 Unità: V numeric

Tensione di rete L3

Lettura
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

Potenza importazione / esportazione rete

Lettura
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

Potenza PV1 (est)

Lettura
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

Potenza PV2 (est)

Lettura
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

Potenza PV3 (ovest)

Lettura
MODBUSR(A, 0x0124, Uint16)/1000
SOC carica notturna (autoconsumo) Dimmer

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

SOC carica notturna (autoconsumo)

Lettura livello
MODBUSR(H, 0x0094, Uint16) / 100
Scrittura livello
MODBUSW(SH, 0x0063,  Uint16, Le * 100)
Temperatura batteria Sensore di temperatura Solo lettura
Registro: A:0x0018 UInt16 Unità: °C numeric

Temperatura batteria

Lettura temperatura
MODBUSR(A,0x0018, UInt16)
Limite max. potenza immissione Variabile

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

Limite max. potenza immissione

Lettura
MODBUSR(H, 0x00B6, Uint16)/100
Scrittura
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

Fonti

Hai trovato un problema con questo template?

Dicci cosa non funziona, cosa manca o come dovrebbe comportarsi il template. Il tuo feedback ci aiuta a mantenere il catalogo accurato.

Verificato da TapHome

Vuoi usarlo nel tuo TapHome Core?

Apri questo template nel Customer Portal per applicarlo a una delle tue case, o crea una proposta di modifica e inviala al catalogo.

Apri nel portale