TapHome

SolaX Hybrid X1/X3 Gen 4

Modbus RTU
Trimis de
Ultima actualizare: 03. 2026
SolaX Hybrid X1/X3 Gen 4

SolaX X1-HYBRID și X3-HYBRID Gen 4 sunt invertoare de stocare a energiei care acceptă atât configurații monofazate (3–7,5 kW), cât și trifazate (5–15 kW). Șablonul TapHome comunică prin Modbus RTU pe RS-485 și citește registre de intrare și registre holding pentru starea de încărcare a bateriei, puterea stringurilor PV, fluxul de putere al rețelei, totalurile de energie, modul încărcătorului și SOC pentru încărcarea de noapte. Toate scripturile de scriere sunt comentate, astfel încât șablonul este practic doar pentru citire.

Șablonul implementează și o detectare completă a defecțiunilor, prin analiza codurilor de eroare ale invertorului pe 32 de biți și a codurilor de eroare ale managerului pe 16 biți, iar defecțiunile individuale sunt raportate ca erori în TapHome.

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ă

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 șablonul TapHome.

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.

Unele registre holding au un număr limitat de cicluri de scriere în EEprom. Operațiile de scriere excesive pot provoca deteriorarea ireversibilă a hardware-ului. Șablonul TapHome are toate scripturile de scriere dezactivate, deci cu șablonul actual nu există acest risc.

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
  2. Baud rate – invertorul are implicit 19200 baud, dar șablonul TapHome folosește 9600 baud. Ajustați unul dintre ele pentru a corespunde celuilalt
  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. 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).

Pentru a nu modifica setările invertorului, ajustați baud rate-ul în setările modulului TapHome la 19200, ca să corespundă valorii implicite a 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 TapHome 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
  • SOC baterie – citește starea de încărcare a bateriei (A:0x1C) în procente. 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)
  • Temperatura bateriei – citește temperatura bateriei (A:0x18) în grade Celsius. Interogată la fiecare 80 de secunde
Puterea fotovoltaică
  • Putere PV1 – puterea DC a stringului PV 1 (A:0x0A), afișată în kW (valoarea în wați împărțită la 1000)
  • Putere PV2 – puterea DC a stringului PV 2 (A:0x0B), afișată în kW (valoarea în wați împărțită la 1000)
Puterea rețelei și măsurarea energiei
  • Putere injectată în rețea – puterea instantanee a rețelei (A:0x46, LittleEndianInt32), în kW. Valorile pozitive indică exportul în rețea, cele negative consumul din rețea
  • Energie zilnică / actuală – combină energia zilnică livrată de portul AC al invertorului (A:0x50, rezoluție 0,1 kWh) cu puterea rețelei în timp real (A:0x02), în kW. Registrul puterii rețelei este specific X1 (monofazat)
  • Energie totală – energia cumulată totală livrată de portul AC al invertorului (A:0x52, LittleEndianInt32), afișată în MWh
Modul încărcătorului și încărcarea de noapte
  • Mod de utilizare încărcător – citește modul activ al încărcătorului solar (H:0x8B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) sau Manual Mode (3). Valorile 4–9 sunt rezervate. Registrul de scriere (H:0x1F) există în șablon, dar este comentat, deci valoarea este doar pentru citire
  • SOC încărcare de noapte (Self Use) – citește limita superioară a SOC-ului pentru încărcarea de noapte în modul Self Use (H:0x94), în procente. Registrul de scriere (H:0x63) și registrul de activare (H:0x62) sunt ambele comentate, deci configurația încărcării de noapte nu poate fi modificată din TapHome
Detectarea defecțiunilor

ReadScript-ul la nivelul modulului monitorizează modul de funcționare al invertorului (A:0x09) și două registre de eroare:

  • Defecțiuni din Mod de funcționare – declanșează o eroare când Mod de funcționare are valoarea 3 (Fault) sau 4 (Permanent Fault)
  • Coduri de defecțiune ale invertorului (A:0x40) – bitmap pe 32 de biți analizat pentru 28 de defecțiuni individuale, 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
  • Coduri de eroare ale managerului (A:0x43) – bitmap pe 16 biți analizat pentru defecțiuni de tip putere, erori EEPROM, probleme ale senzorului NTC, avertismente de temperatură a bateriei, defecțiuni ale contorului și defecțiuni ale ventilatorului

Atributul de service Mod de funcționare de pe modul 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.

Funcții suplimentare

Invertorul pune la dispoziție o hartă completă a registrelor, cu peste 300 de registre holding și 200 de registre de intrare. Printre funcțiile încă neimplementate în șablon se numără monitorizarea tensiunii și curentului pe fiecare string PV (A:0x03–0x06), citirea tensiunii/curentului/puterii bateriei, starea conexiunii BMS, starea de conectare/deconectare la rețea, tensiunea/curentul/puterea rețelei pe fiecare fază la X3 (12 registre la A:0x6A–0x75), energia cumulată injectată în rețea și consumată din rețea (prin contor), producția totală de energie solară, SOC și SOH de utilizator din BMS, precum și temperatura și tensiunea minimă/maximă a celulelor bateriei. Funcțiile de scriere includ pornirea/oprirea sistemului, selectarea modului încărcătorului, încărcarea/descărcarea forțată manuală, SOC minim de descărcare, configurarea încărcării de noapte și controlul de la distanță al puterii, cu ținte de putere activă/reactivă. Acestea pot fi adăugate într-o actualizare viitoare a șablonului.

Șablonul citește în prezent puterea rețelei pentru X1 (monofazat) la A:0x02. Pentru instalațiile X3 (trifazate), puterea rețelei pe fiecare fază este disponibilă în registrele A:0x6C, A:0x70 și A:0x74, dar nu este inclusă în șablonul actual.

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 EV Charger)
  3. Confirmați că baud rate-ul coincide între invertor și TapHome – invertorul are implicit 19200, iar șablonul 9600
  4. Verificați dacă 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
Valoarea SOC baterie este incorectă

Registrul SOC baterie (A:0x1C) raportează valori în unități de 1%. Șablonul le î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 AnalogInput (interval 0–1, nu 0–100).

Convenția de semn pentru puterea rețelei

Dispozitivul Putere injectată în rețea (A:0x46) folosește o convenție de semn în care valorile pozitive înseamnă export (producție/injectare în rețea), iar cele negative import (consum din rețea). Registrul puterii rețelei pentru Energie zilnică / actuală (A:0x02) poate afișa și el valori negative în timpul consumului din rețea.

Diferențe de registre între X1 și X3

Unele registre sunt specifice modelului. Tensiunea (A:0x00), curentul (A:0x01) și puterea (A:0x02) rețelei sunt registre X1 monofazate. La modelele X3 trifazate, valorile echivalente pe fiecare fază se află la A:0x6A–0x75. Șablonul folosește registrul puterii rețelei X1, care poate să nu raporteze corect la modelele X3.

Dispozitive disponibile

SolaX Hybrid Gen 4 Modul
Atribute de service
Mod de funcționareStarea de funcționare a invertorului — Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby

SOLAX Hybrid Gen 4

Citire (modul)
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"));
Atribute de service
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"
);
SOC baterie Intrare analogică Doar citire

Starea de încărcare a bateriei în procente (0-100%) — afișată în TapHome ca intrare analogică 0-1

Registru: A:0x1C UInt16 Unitate: % numeric

SOC baterie

Citirea nivelului de intrare
MODBUSR(A, 0x1C, UInt16)/100
Temperatura bateriei Senzor de temperatură Doar citire
Registru: A:0x18 UInt16 Unitate: °C numeric

Temperatura bateriei

Citirea temperaturii
MODBUSR(A,0x0018, UInt16)
Energie zilnică / actuală Contor electric Doar citire

Combină energia zilnică livrată în rețea (kWh) cu puterea rețelei în timp real (kW) — puterea negativă a rețelei indică importul

Registru: A:0x50, A:0x02 UInt16, Int16 Unitate: kWh / kW numeric

Energie zilnică / actuală

Citirea consumului total
MODBUSR(A, 0x50, UInt16) /10
Citirea cererii
MODBUSR(A,0x02, Int16)/1000
Mod de utilizare încărcător Comutator cu mai multe valori Doar citire

Modul activ al încărcătorului solar — Self Use, Feedin Priority, Backup sau Manual (doar pentru citire)

Registru: H:0x8B → H:0x1F UInt16 numeric
Valori / Stări: Self Use Mode · Feedin Priority · Backup Mode · Manual Mode

Mod de utilizare încărcător

Citirea stării comutatorului
MODBUSR(H, 0x008B, Uint16)
Scrierea stării comutatorului
#MODBUSW(H, 0x001F, uint16, Mu)
Putere injectată în rețea Variabilă Doar citire

Puterea instantanee a rețelei în kW — valorile pozitive indică exportul, cele negative importul

Registru: A:0x46 LittleEndianInt32 Unitate: kW numeric

Putere injectată în rețea

Citire
MODBUSR(A, 0x46,LittleEndianInt32)/1000
Putere PV1 Variabilă Doar citire
Registru: A:0x0A UInt16 Unitate: kW numeric

Putere PV1

Citire
MODBUSR(A,0x0a, UInt16)/1000
Putere PV2 Variabilă Doar citire
Registru: A:0x0B UInt16 Unitate: kW numeric

Putere PV2

Citire
MODBUSR(A,0x0b, UInt16)/1000
SOC încărcare de noapte (Self Use) Dimmer Doar citire

Limita superioară a SOC-ului pentru încărcarea de noapte în modul Self Use (doar pentru citire, 10-100%)

Registru: H:0x94 → H:0x63 UInt16 Unitate: % numeric

SOC încărcare de noapte (Self Use)

Inițializare
#MODBUSWNE(H, 0x0062, Uint16, 1);
Citirea nivelului
MODBUSR(H, 0x0094, Uint16) / 100
Scrierea nivelului
#MODBUSW(H, 0x0063, Uint16, Le * 100)
Energie totală Variabilă Doar citire

Energia cumulată totală livrată de portul AC al invertorului, în MWh

Registru: A:0x52 LittleEndianInt32 Unitate: MWh numeric

Energie totală

Citire
MODBUSR(A, 0x52,LittleEndianInt32) / 1000
Conexiune: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Îmbunătățiri posibile (25)
  • A:0x00 Grid Voltage (X1) — 0.1V, UInt16. X3 per-phase voltages at A:0x6A/0x6E/0x72
  • A:0x01 Grid Current (X1) — 0.1A, Int16. X3 per-phase currents at A:0x6B/0x6F/0x73
  • A:0x03, A:0x04 PV Voltage 1 & 2 — 0.1V, UInt16. Useful for string-level diagnostics
  • A:0x05, A:0x06 PV Current 1 & 2 — 0.1A, UInt16. Useful for string-level diagnostics
  • A:0x08 Radiator Temperature — 1°C, Int16. Inverter internal radiator/heatsink temperature
  • A:0x14 Battery Voltage — 0.1V, Int16. Battery pack voltage
  • A:0x15 Battery Current — 0.1A, Int16. Positive=charge, negative=discharge
  • A:0x16 Battery Power — 1W, Int16. Positive=charging, negative=discharging
  • A:0x17 BMS Connect State — 0=Disconnected, 1=Connected. Critical for battery health monitoring
  • A:0x1A Grid Status — 0=OnGrid, 1=OffGrid. Important for backup/off-grid scenarios
  • A:0x48–0x49 Feed-in Energy Total (Meter) — 0.01kWh, UInt32 LE. Cumulative energy exported to grid via meter
  • A:0x4A–0x4B Consumed Energy Total (Meter) — 0.01kWh, UInt32 LE. Cumulative energy consumed from grid via meter
  • A:0x6A–0x75 X3 Per-Phase Grid Readings — Voltage/current/power/frequency per phase R/S/T. 12 registers total. Essential for 3-phase monitoring
  • A:0x94–0x95 Solar Energy Total — 0.1kWh, UInt32 LE. Cumulative PV production (both strings combined)
  • A:0x96 Solar Energy Today — 0.1kWh, UInt16. Today PV production
  • A:0xBE BMS User SOC — 1%, UInt16. SOC as reported by BMS (may differ from A:0x1C)
  • A:0xBF BMS User SOH — 1%, UInt16. Battery state of health
  • Write 0x001C System ON/OFF — 0=OFF, 1=ON. Remote system power control
  • Write 0x001F Charger Use Mode (write) — Write register exists in template but is COMMENTED OUT. 0=Self Use, 1=Feed-in, 2=Backup, 3=Manual
  • Write 0x0020 Manual Mode — 0=Stop, 1=Force charge, 2=Force discharge. Requires Charger Use Mode = 3 (Manual)
  • Write 0x0061 SelfUse Discharge Min SOC — 10%–100%. Minimum SOC before discharge stops in Self-Use mode
  • H:0x8C Manual Mode Readback — 0=Stop, 1=Force charge, 2=Force discharge. Readback of current manual mode setting
  • A:0xBA, A:0xBB Battery Temp High/Low — 0.1°C, Int16. Min/max battery cell temperatures
  • A:0xBC, A:0xBD Cell Voltage High/Low — 0.001V, UInt16. Min/max individual cell voltages. Important for battery health
  • Write 0x007C–0x0082 Remote Power Control — Active/reactive power targets, duration. Enables advanced energy management and grid services

Surse

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.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

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.

Deschideți în portal