TapHome
Comunitate Beta Energie și contorizare

SolaX X1/X3-Hybrid G4 — corrected monitoring (Modbus RTU)

Șablon din comunitate pentru invertoarele SolaX X1-HYBRID și X3-HYBRID Gen 4 prin Modbus RTU pe RS-485: șablonul oficial TapHome Gen 4 cu citiri corectate — ordinea cuvintelor codului de defecțiune, scara energiei totale, contorul producției PV și temperatura bateriei cu semn. Citește SOC-ul și temperatura bateriei, puterea PV1/PV2, injectarea în rețea, totalurile de energie, modul încărcătorului și SOC-ul de noapte; scrierile rămân dezactivate. 19200 baud, 8N1, Slave ID 1.

SolaXModbus RTU9 dispozitiveRevizia 1.0 Ultima actualizare: 12 noiembrie 2026

Trimis de Martin Keller

SolaX X1/X3-Hybrid G4 — corrected monitoring (Modbus RTU)

Import în aplicația TapHomeHardware › Modbus › Adăugați din șablon

Descărcați șablon
Pe această pagină

Ghid de integrare

SolaX X1-HYBRID și X3-HYBRID Gen 4 sunt invertoare de stocare a energiei cu PV și baterie, disponibile în variante monofazate (3–7,5 kW) și trifazate (5–15 kW). Acest șablon din comunitate este șablonul oficial TapHome SolaX Gen 4, cu citirile corectate conform protocolului SolaX Modbus (V3.21 și V001.02). Comunică prin Modbus RTU pe RS-485 și citește starea de încărcare și temperatura bateriei, puterea stringurilor PV, fluxul de putere al rețelei, totalurile de energie, modul încărcătorului și SOC-ul pentru încărcarea de noapte. Numele dispozitivelor sunt aceleași ca în șablonul oficial, astfel încât un import mai vechi poate fi comparat dispozitiv cu dispozitiv. Toate scripturile de scriere rămân comentate, ca în șablonul oficial, deci șablonul este doar pentru citire.

Modulul analizează și codul de defecțiune al invertorului pe 32 de biți și codul de eroare al managerului pe 16 biți și raportează fiecare defecțiune în TapHome cu propriul cod de eroare.

Cum se obține șablonul

Șabloanele din comunitate nu sunt oferite în lista de șabloane a aplicației TapHome. Conectați-vă pe portal.taphome.com, descărcați fișierul XML al acestui șablon și importați-l în Core. Un modul importat anterior din șablonul oficial SolaX Hybrid X1/X3 Gen 4 nu se actualizează singur — fie importați acest șablon ca modul nou, fie corectați scripturile modulului vechi conform tabelului din secțiunea „Ce corectează acest șablon” de mai jos.

Conectarea hardware

Invertorul SolaX Gen 4 are pe panoul inferior un port COM RS-485 pentru comunicația Modbus RTU. Portul COM folosește un conector RJ45.

Panoul inferior SolaX X3-HYBRID G4 — dispunerea bornelor cu conexiunile COM, BMS, Meter/CT, PV, BAT și GRID

Alocarea pinilor bornei COM (RJ45):

PinAlocareDescriere
1Drycontact_A(in)Conexiune comutator de sistem
2Drycontact_B(in)Conexiune comutator de sistem
3+13V—
4485ARS-485 date+ (pentru TapHome)
5485BRS-485 date− (pentru TapHome)
6GNDMasă
7Drycontact_A(out)Conexiune generator
8Drycontact_B(out)Conexiune generator

Conectați TapHome la portul COM al invertorului:

  • Pinul 4 (485A) de pe COM-ul invertorului la A+/D+ pe RS-485 TapHome
  • Pinul 5 (485B) de pe COM-ul invertorului la B-/D- pe RS-485 TapHome
  • Conectarea pinului 6 (GND) este recomandată pentru o comunicație fiabilă

Manualul SolaX prevede un cablu de rețea CAT5E sertizat în mufa RJ45 livrată cu invertorul și o lungime a cablului COM de cel mult 30 m.

Pinul 3 (+13V) și pinul 6 (GND) nu trebuie conectați între ei. Izolați pinii care nu sunt folosiți.

Invertorul în sine nu acceptă nativ Modbus TCP. Modbus TCP este disponibil doar prin modulul de monitorizare SolaX (dongle Wi-Fi) și nu este folosit de acest șablon.

Pentru instalațiile în care cablarea RS-485 nu este practică, șablonul SolaX Inverter (Cloud API) oferă monitorizare prin platforma SolaxCloud, prin HTTPS — fără conexiune fizică. Acceptă toate tipurile de invertoare SolaX, nu doar Gen 4 Hybrid.

Modul încărcătorului și setările încărcării de noapte sunt registre EEPROM ale invertorului (marcate de SolaX cu ★, aproximativ 1 milion de cicluri de scriere). Operațiile de scriere excesive pot provoca deteriorarea ireversibilă a hardware-ului — nu activați niciodată pe ele o scriere care rulează periodic. Acest șablon are toate scripturile de scriere dezactivate.

Configurare

Activarea comunicației Modbus

Modbus RTU este disponibil implicit pe portul COM RS-485 al invertorului. Următorii parametri trebuie să coincidă între invertor și modulul TapHome:

  1. Slave ID – implicit 1, configurabil pe afișajul invertorului. Șablonul îl cere ca singurul parametru de import, Modbus Slave ID (implicit 1)
  2. Baud rate – 19200 baud, valoarea implicită din fabrică SolaX; și șablonul folosește 19200. Dacă invertorul a fost setat la altă viteză (de exemplu 9600), modificați fie setarea invertorului, fie viteza interfeței TapHome, astfel încât cele două să coincidă
  3. Format de date – 8 biți de date, fără paritate, 1 bit de stop

Configurarea pe afișajul invertorului: Menu > Setting > Advance Setting > Modbus. Setați adresa slave și baud rate-ul. Setările avansate necesită parola de instalator, disponibilă de la distribuitor. Baud rate-ul poate fi citit și din registrul holding H:0x00B0 și scris prin registrul 0x00CA (valori: 0=115200, 1=57600, 2=56000, 3=38400, 4=19200, 5=14400, 6=9600).

În TapHome, șablonul se importă apoi pe interfața RS-485 Modbus RTU a Core-ului, setată la aceeași viteză și același format de date, cu Slave ID-ul invertorului.

Temporizarea comunicației

Protocolul cere un interval minim de 1 secundă între instrucțiunile Modbus consecutive și un timeout între caractere de cel puțin 100 ms. Timeout-ul de răspuns este de 1 secundă. Șablonul folosește intervale de interogare individuale pentru fiecare dispozitiv (2,5 s până la 150 s), care respectă aceste condiții.

Funcția portului COM RS-485

Registrul H:0x013E (485CommFunSelect) determină dacă portul RS-485 este folosit pentru comunicația Modbus (valoarea 0) sau pentru comunicația cu stația de încărcare (valoarea 1). Pentru integrarea cu TapHome, asigurați-vă că este setat la 0 (Modbus 485).

Funcțiile dispozitivului

Monitorizarea bateriei

  • Baterie (SOC) – citește starea de încărcare a bateriei (A:0x001C) în procente, la fiecare 15 secunde. Valoarea brută a registrului, în unități de 1%, se împarte la 100 pentru intervalul intrării analogice TapHome 0–1 (de ex. 85% devine 0,85)
  • Battery Temperature – citește temperatura bateriei (A:0x0018) în grade Celsius ca valoare cu semn (Int16), astfel încât temperaturile sub 0 °C sunt afișate corect. Interogată la fiecare 80 de secunde

Puterea fotovoltaică

  • PV1 – puterea DC a stringului PV 1 (A:0x000A), afișată în kW după conversia din wați (/1000)
  • PV2 – puterea DC a stringului PV 2 (A:0x000B), afișată în kW după conversia din wați (/1000)

PV1 și PV2 sunt valori simple, fără tip de energie, deci nu sunt numărate de două ori în Energy Dashboard.

Puterea rețelei și măsurarea energiei

  • Purchase/Feed to Grid – puterea instantanee a rețelei (A:0x0046–0x0047, LittleEndianInt32), în kW, o valoare simplă fără tip de energie. Valorile pozitive indică injectarea în rețea, cele negative consumul din rețea. Invertorul preia această valoare de la contorul sau transformatorul de curent (CT) conectat la el
  • Daily/Actual Energy – contorul producției PV pentru Energy Dashboard. Puterea sa este PV1 + PV2 (A:0x000A + A:0x000B) în kW, iar totalul său este energia PV totală (A:0x0094–0x0095, SolarEnergyTotal, unități de 0,1 kWh) în kWh. În ciuda numelui, totalul nu se resetează noaptea
  • Total Energy – energia cumulată totală livrată de portul AC al invertorului (A:0x0052–0x0053, LittleEndianUint32, unități de 0,1 kWh), afișată în kWh

Modul încărcătorului și încărcarea de noapte

  • Charger Use Mode – citește modul activ al încărcătorului solar (H:0x008B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) sau Manual Mode (3). Registrul de scriere (H:0x001F) există în șablon, dar este comentat, deci valoarea este doar pentru citire
  • SelfUse Night Charge – citește limita superioară a SOC-ului pentru încărcarea de noapte în modul Self Use (H:0x0094), în procente. Registrul de scriere (H:0x0063) și registrul de activare (H:0x0062) sunt ambele comentate, deci configurația încărcării de noapte nu poate fi modificată din TapHome

Detectarea defecțiunilor

Scriptul de citire al modulului monitorizează modul de funcționare al invertorului (A:0x0009) și două registre de eroare. Fiecare defecțiune are propriul cod de eroare:

  • Defecțiuni din modul de funcționare – eroarea 1 când modul de funcționare este 3 (Fault), eroarea 2 când este 4 (Permanent Fault)
  • Codul de defecțiune al invertorului (A:0x0040–0x0041, LittleEndianUint32) – 30 de defecțiuni individuale cu codurile 100–131 (100 + numărul bitului), inclusiv defecțiuni de tensiune/frecvență a rețelei, defecțiuni de tensiune PV, defecțiuni ale bateriei, defecțiuni de izolație, supratemperatură, protecție la supracurent, defecțiuni ale releului și erori de comunicare. Numele defecțiunilor urmează tabelul X3 din protocolul SolaX
  • Codul de eroare al managerului (A:0x0043) – codurile 200–211 (200 + numărul bitului) pentru defecțiuni de tip putere, erori EEPROM, probleme ale senzorului NTC, temperatură scăzută/ridicată a bateriei, defecțiuni ale contorului, ale releului de bypass și ale ventilatorului. Port OC Warning (201) este raportat ca avertisment, celelalte ca erori

Atributul de service Run mode al modulului afișează starea actuală a invertorului ca text: Waiting, Checking, Normal, Fault, Permanent fault, Update, Off-grid waiting, Off-grid, Self testing, Idle sau Standby.

Ce corectează acest șablon

Șablonul oficial TapHome SolaX Hybrid X1/X3 Gen 4 citește greșit mai multe registre (verificat conform protocolului SolaX Modbus V3.21 și V001.02). Acest șablon le corectează:

UndeȘablonul oficialAcest șablonEfectul erorii în șablonul oficial
Modul — script de citirevar x3 := MODBUSR(A, 0x0040, Uint32);VAR inv := MODBUSR(A, 0x0040, LittleEndianUint32);Cele două jumătăți ale codului de defecțiune pe 32 de biți sunt inversate: o defecțiune pe bitul 1 (Grid Lost Fault) este raportată ca bitul 17 (Bat Power Low)
Total EnergyMODBUSR(A, 0x52, LittleEndianInt32) / 1000MODBUSR(A, 0x0052, LittleEndianUint32) / 10Valoare de 100× prea mică (registrul numără în unități de 0,1 kWh)
Daily/Actual Energy — totalMODBUSR(A, 0x50, UInt16) /10MODBUSR(A, 0x0094, LittleEndianUint32) / 100x0050 este un contor zilnic al portului AC al invertorului, care scade la 0 în fiecare noapte; 0x0094 este energia PV totală
Daily/Actual Energy — putereMODBUSR(A,0x02, Int16)/1000(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16)) / 10000x0002 este puterea rețelei la modelele monofazate X1, nu producția PV; pe multe unități X3 citește 0
Battery TemperatureMODBUSR(A,0x0018, UInt16)MODBUSR(A, 0x0018, Int16)Sub 0 °C șablonul oficial afișează aproximativ 65535 °C
Viteza interfeței9600 baud19200 baud19200 este valoarea implicită din fabrică SolaX

Cu scripturile corectate, contorul Daily/Actual Energy măsoară producția PV (PV1 + PV2), adică exact ce așteaptă tipul său de energie în Energy Dashboard. PV1, PV2 și Purchase/Feed to Grid nu mai au tip de energie — sunt valori simple. Toate scrierile rămân dezactivate, ca în șablonul oficial.

Rezolvarea problemelor

Nu există comunicare cu invertorul

  1. Verificați conexiunile cablului RS-485: A+ la A+, B- la B-, GND la GND
  2. Verificați dacă registrul H:0x013E este setat la 0 (mod Modbus 485, nu stație de încărcare)
  3. Confirmați că baud rate-ul coincide între invertor și TapHome – șablonul folosește 19200, valoarea implicită a invertorului; la un invertor setat la 9600 trebuie modificată una dintre părți
  4. Verificați dacă Modbus Slave ID-ul din TapHome corespunde setării invertorului (implicit: 1)
  5. Asigurați-vă că niciun alt master Modbus nu este conectat la aceeași magistrală RS-485 – Modbus acceptă un singur master

Valorile arată ca în șablonul oficial

Dacă Total Energy este de 100× prea mică, Daily/Actual Energy scade la 0 în fiecare noapte sau Battery Temperature afișează aproximativ 65535 °C sub punctul de îngheț, modulul rulează încă scripturile șablonului oficial. Un modul nu se actualizează singur dintr-un șablon mai nou — importați acest șablon ca modul nou sau corectați scripturile conform tabelului de mai sus.

Valoarea Baterie (SOC) este incorectă

Registrul Baterie (SOC) (A:0x001C) raportează valori în unități de 1%. Șablonul împarte la 100 pentru intervalul intrării analogice TapHome 0–1. Dacă valoarea afișată pare greșită, verificați dacă dispozitivul TapHome este configurat ca intrare analogică (interval 0–1, nu 0–100).

Convenția de semn pentru puterea rețelei

Purchase/Feed to Grid (A:0x0046) folosește o convenție de semn în care valorile pozitive înseamnă injectare (export în rețea), iar cele negative consum (achiziție din rețea). Invertorul obține această valoare de la contorul sau CT-ul său, deci depinde de un contor sau CT conectat corect.

Diferențe între X1 și X3

Șablonul citește puterea PV (A:0x000A și A:0x000B) în locul registrului puterii rețelei X1, astfel încât contorul Daily/Actual Energy funcționează la fel pe modelele X1 și X3. Numele defecțiunilor urmează tabelul X3 din protocolul SolaX. Pe un invertor X1, unii biți de defecțiune înseamnă alte defecțiuni — bitul 9 și majoritatea biților de la bitul 15 în sus (de exemplu, bitul 15 este Missed CT Fault la X1, dar Off-grid Overload la X3).

Dispozitive disponibile 9

Aceste dispozitive apar în TapHome după import.

SolaX X3-Hybrid G4 Modul
Atribute de service
Run mode

SolaX X3-Hybrid G4

Citire (modul)
VAR mode := MODBUSR(A, 0x0009, UInt16);
IF(mode = 3, ADDERROR(1, "Inverter fault (run mode 3)"));
IF(mode = 4, ADDERROR(2, "Inverter permanent fault (run mode 4)"));
VAR inv := MODBUSR(A, 0x0040, LittleEndianUint32);
IF(GETBIT(inv, 0) = 1, ADDERROR(100, "TZ Protect Fault"));
IF(GETBIT(inv, 1) = 1, ADDERROR(101, "Grid Lost Fault"));
IF(GETBIT(inv, 2) = 1, ADDERROR(102, "Grid Volt Fault"));
IF(GETBIT(inv, 3) = 1, ADDERROR(103, "Grid Freq Fault"));
IF(GETBIT(inv, 4) = 1, ADDERROR(104, "PV Volt Fault"));
IF(GETBIT(inv, 5) = 1, ADDERROR(105, "Bus Volt Fault"));
IF(GETBIT(inv, 6) = 1, ADDERROR(106, "Bat Volt Fault"));
IF(GETBIT(inv, 7) = 1, ADDERROR(107, "AC10mins Volt Fault"));
IF(GETBIT(inv, 8) = 1, ADDERROR(108, "DCI OCP Fault"));
IF(GETBIT(inv, 9) = 1, ADDERROR(109, "DCV OCP Fault"));
IF(GETBIT(inv, 10) = 1, ADDERROR(110, "SW OCP Fault"));
IF(GETBIT(inv, 11) = 1, ADDERROR(111, "RC OCP Fault"));
IF(GETBIT(inv, 12) = 1, ADDERROR(112, "Isolation Fault"));
IF(GETBIT(inv, 13) = 1, ADDERROR(113, "Temp Over Fault"));
IF(GETBIT(inv, 14) = 1, ADDERROR(114, "BatConnDir Fault"));
IF(GETBIT(inv, 15) = 1, ADDERROR(115, "Off-grid Overload"));
IF(GETBIT(inv, 16) = 1, ADDERROR(116, "Overload"));
IF(GETBIT(inv, 17) = 1, ADDERROR(117, "Bat Power Low"));
IF(GETBIT(inv, 18) = 1, ADDERROR(118, "BMS Lost"));
IF(GETBIT(inv, 19) = 1, ADDERROR(119, "Fan Fault"));
IF(GETBIT(inv, 20) = 1, ADDERROR(120, "Low Temp Fault"));
IF(GETBIT(inv, 23) = 1, ADDERROR(123, "INV Volt Sample Fault"));
IF(GETBIT(inv, 24) = 1, ADDERROR(124, "Inner Comm Fault"));
IF(GETBIT(inv, 25) = 1, ADDERROR(125, "INV EEPROM Fault"));
IF(GETBIT(inv, 26) = 1, ADDERROR(126, "RCD Fault"));
IF(GETBIT(inv, 27) = 1, ADDERROR(127, "Grid Relay Fault"));
IF(GETBIT(inv, 28) = 1, ADDERROR(128, "Off-grid Relay Fault"));
IF(GETBIT(inv, 29) = 1, ADDERROR(129, "PV ConnDir Fault"));
IF(GETBIT(inv, 30) = 1, ADDERROR(130, "Charger Relay Fault"));
IF(GETBIT(inv, 31) = 1, ADDERROR(131, "Earth Relay Fault"));
VAR mgr := MODBUSR(A, 0x0043, UInt16);
IF(GETBIT(mgr, 0) = 1, ADDERROR(200, "Power Type Fault"));
IF(GETBIT(mgr, 1) = 1, ADDWARNING(201, "Port OC Warning"));
IF(GETBIT(mgr, 2) = 1, ADDERROR(202, "Mgr EEPROM Fault"));
IF(GETBIT(mgr, 4) = 1, ADDERROR(204, "NTC Sample Invalid"));
IF(GETBIT(mgr, 5) = 1, ADDERROR(205, "Battery Temperature Low"));
IF(GETBIT(mgr, 6) = 1, ADDERROR(206, "Battery Temperature High"));
IF(GETBIT(mgr, 9) = 1, ADDERROR(209, "Meter Fault"));
IF(GETBIT(mgr, 10) = 1, ADDERROR(210, "Bypass Relay Fault"));
IF(GETBIT(mgr, 11) = 1, ADDERROR(211, "Fan 2 Fault"));
Atribute de service
Run mode
SWITCH(MODBUSR(A, 0x0009, 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")
${deviceType_BatterySOC} Intrare analogică

${deviceType_BatterySOC}

Citirea nivelului de intrare
MODBUSR(A, 0x001C, UInt16) / 100
Battery Temperature Senzor de temperatură

Battery Temperature

Citirea temperaturii
MODBUSR(A, 0x0018, Int16)
Daily/Actual Energy Contor electric

Daily/Actual Energy

Citirea consumului total
MODBUSR(A, 0x0094, LittleEndianUint32) / 10
Citirea cererii
(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16)) / 1000
Charger Use Mode Comutator cu mai multe valori
Valori / Stări: Self Use Mode · Feedin Priority · Backup Mode · Manual Mode

Charger Use Mode

Citirea stării comutatorului
MODBUSR(H, 0x008B, UInt16)
Scrierea stării comutatorului
#MODBUSW(SH, 0x001F, Uint16, Mu)
Purchase/Feed to Grid Variabilă

Purchase/Feed to Grid

Citire
MODBUSR(A, 0x0046, LittleEndianInt32) / 1000
PV1 Variabilă

PV1

Citire
MODBUSR(A, 0x000A, UInt16) / 1000
PV2 Variabilă

PV2

Citire
MODBUSR(A, 0x000B, UInt16) / 1000
SelfUse Night Charge Dimmer

SelfUse Night Charge

Inițializare
#MODBUSWNE(SH, 0x0062, Uint16, 1);
Citirea nivelului
MODBUSR(H, 0x0094, UInt16) / 100
Scrierea nivelului
#MODBUSW(SH, 0x0063, Uint16, Le * 100)
Total Energy Variabilă

Total Energy

Citire
MODBUSR(A, 0x0052, LittleEndianUint32) / 10
Conexiune: Modbus RTU • 19200 baud• 8N1 • Slave ID: $[SlaveId]

Parametri de import

Introduceți aceste valori când importați XML-ul.

Solicitat în aplicațieImplicit
Modbus Slave ID1

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Șablon · portalul TapHome SolaX X1/X3-Hybrid G4 — corrected monitoring (Modbus RTU) Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog. Modbus RTU Vezi în portalul TapHome