TapHome

SolaX Hybrid X1/X3 Gen 4

Modbus RTU
Dodane przez
Ostatnia aktualizacja: 03. 2026
SolaX Hybrid X1/X3 Gen 4

SolaX X1-HYBRID i X3-HYBRID Gen 4 to falowniki magazynowania energii obsługujące zarówno konfiguracje jednofazowe (3–7,5 kW), jak i trójfazowe (5–15 kW). Szablon TapHome komunikuje się przez Modbus RTU po RS-485, odczytując rejestry wejściowe i holding dla stanu naładowania baterii, mocy łańcucha PV, przepływu mocy sieciowej, sum energii, trybu ładowania i SOC ładowania nocnego. Wszystkie skrypty zapisu są zakomentowane, co czyni szablon efektywnie tylko do odczytu.

Szablon implementuje również kompleksowe wykrywanie usterek poprzez analizę 32-bitowych kodów błędów falownika i 16-bitowych kodów błędów menedżera, raportując poszczególne usterki jako błędy w TapHome.

Podłączenie sprzętu

Falownik SolaX Gen 4 zapewnia port COM RS-485 do komunikacji Modbus RTU na dolnym panelu. Port COM wykorzystuje złącze RJ45.

Dolny panel SolaX X3-HYBRID G4 — układ terminali z połączeniami COM, BMS, Meter/CT, PV, BAT i GRID

Przypisanie pinów terminala COM (RJ45):

PinPrzypisanieOpis
1Drycontact_A(in)Podłączenie wyłącznika systemowego
2Drycontact_B(in)Podłączenie wyłącznika systemowego
3+13V
4485ARS-485 data+ (dla TapHome)
5485BRS-485 data− (dla TapHome)
6GNDMasa
7Drycontact_A(out)Podłączenie generatora
8Drycontact_B(out)Podłączenie generatora

Podłącz TapHome do portu COM falownika:

  • Pin 4 (485A) na porcie COM falownika do A+/D+ na RS-485 TapHome
  • Pin 5 (485B) na porcie COM falownika do B-/D- na RS-485 TapHome
  • Pin 6 (GND) — zalecany dla niezawodnej komunikacji

Falownik sam w sobie nie obsługuje natywnie Modbus TCP. Modbus TCP jest dostępny wyłącznie przez moduł monitorowania SolaX (dongle Wi-Fi) i nie jest używany przez szablon TapHome.

Dla instalacji, w których okablowanie RS-485 nie jest praktyczne, szablon SolaX Inverter (Cloud API) zapewnia monitoring przez platformę SolaxCloud za pośrednictwem HTTPS — bez fizycznego połączenia. Obsługuje wszystkie typy falowników SolaX, nie tylko Gen 4 Hybrid.

Niektóre rejestry holding są oznaczone ograniczoną liczbą cykli zapisu EEprom. Nadmierne operacje zapisu mogą spowodować nieodwracalne uszkodzenie sprzętu. Szablon TapHome ma wszystkie skrypty zapisu wyłączone, więc nie jest to problemem przy aktualnym szablonie.

Konfiguracja

Włączanie komunikacji Modbus

Modbus RTU jest domyślnie dostępny na porcie COM RS-485 falownika. Następujące parametry muszą być zgodne między falownikiem a modułem TapHome:

  1. Slave ID – domyślnie 1, konfigurowalne na wyświetlaczu falownika
  2. Baud rate – falownik domyślnie używa 19200 baud, ale szablon TapHome używa 9600 baud. Dostosuj jeden z nich, aby się zgadzały
  3. Format danych – 8 bitów danych, brak parzystości, 1 bit stopu

Konfiguracja na wyświetlaczu falownika: Menu > Setting > Advance Setting > Modbus. Ustaw adres slave i baud rate. Baud rate można również odczytać z rejestru holding H:0x00B0 i zapisać przez rejestr 0x00CA (wartości: 0=115200, 1=57600, 2=56000, 3=38400, 4=19200, 5=14400, 6=9600).

Aby uniknąć zmiany ustawień falownika, dostosuj baud rate w ustawieniach modułu TapHome do 19200, aby odpowiadał domyślnej wartości falownika.

Harmonogram komunikacji

Protokół wymaga minimalnego interwału 1 sekundy między kolejnymi instrukcjami Modbus i limitu czasu przerwy między znakami wynoszącego co najmniej 100 ms. Limit czasu odpowiedzi wynosi 1 sekundę. Szablon TapHome używa indywidualnych interwałów pollingu dla każdego urządzenia (od 2,5 s do 150 s), które spełniają te wymagania.

Funkcja portu COM RS-485

Rejestr H:0x013E (485CommFunSelect) określa, czy port RS-485 jest używany do komunikacji Modbus (wartość 0), czy do komunikacji ładowarki EV (wartość 1). Upewnij się, że jest ustawiony na 0 (Modbus 485) dla integracji TapHome.

Możliwości urządzenia

Monitorowanie baterii
  • Battery SOC – odczytuje stan naładowania baterii (A:0x1C) jako procent. Surowa wartość rejestru w jednostkach 1% jest dzielona przez 100 dla zakresu wejścia analogowego TapHome 0–1 (np. 85% staje się 0,85)
  • Battery Temperature – odczytuje temperaturę baterii (A:0x18) w stopniach Celsjusza. Polling co 80 sekund
Moc solarna PV
  • PV1 Power – wyjście mocy DC z łańcucha PV 1 (A:0x0A), wyświetlane w kW po konwersji /1000 z watów
  • PV2 Power – wyjście mocy DC z łańcucha PV 2 (A:0x0B), wyświetlane w kW po konwersji /1000 z watów
Moc sieciowa i pomiar energii
  • Grid Feed-in Power – chwilowa moc sieciowa (A:0x46, LittleEndianInt32) w kW. Wartości dodatnie oznaczają eksport do sieci, wartości ujemne oznaczają pobór z sieci
  • Daily / Actual Energy – łączy dzienny wynik energii z portu AC falownika (A:0x50, rozdzielczość 0,1 kWh) i moc sieciową w czasie rzeczywistym (A:0x02) w kW. Rejestr mocy sieciowej jest specyficzny dla X1 (jednofazowy)
  • Total Energy – całkowita skumulowana produkcja energii z portu AC falownika (A:0x52, LittleEndianInt32), wyświetlana w MWh
Tryb ładowania i ładowanie nocne
  • Charger Use Mode – odczytuje aktywny tryb ładowania solarnego (H:0x8B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) lub Manual Mode (3). Wartości 4–9 są zarezerwowane. Rejestr zapisu (H:0x1F) istnieje w szablonie, ale jest zakomentowany, co czyni go tylko do odczytu
  • Self-Use Night Charge SOC – odczytuje górną docelową wartość SOC dla ładowania nocnego w trybie Self-Use (H:0x94) jako procent. Rejestr zapisu (H:0x63) i rejestr włączania (H:0x62) są zakomentowane, więc konfiguracja ładowania nocnego nie może być zmieniana przez TapHome
Wykrywanie usterek

ReadScript na poziomie modułu monitoruje tryb pracy falownika (A:0x09) i dwa rejestry błędów:

  • Run Mode usterki – wyzwala błąd, gdy Run Mode wynosi 3 (Usterka) lub 4 (Trwała usterka)
  • Kody błędów falownika (A:0x40) – 32-bitowa bitmapa analizowana dla 28 indywidualnych usterek, w tym usterek napięcia/częstotliwości sieci, usterek napięcia PV, usterek baterii, usterek izolacji, przegrzania, ochrony przed przeciążeniem, usterek przekaźnika i błędów komunikacji
  • Kody błędów menedżera (A:0x43) – 16-bitowa bitmapa analizowana dla usterek typu mocy, błędów EEPROM, problemów z czujnikami NTC, ostrzeżeń temperatury baterii, usterek licznika i usterek wentylatora

Atrybut usługi Run Mode w module wyświetla bieżący stan falownika jako tekst: Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle lub Standby.

Dodatkowe możliwości

Falownik udostępnia kompleksową mapę rejestrów z ponad 300 rejestrami holding i 200 rejestrami wejściowymi. Godne uwagi możliwości jeszcze nie zaimplementowane w szablonie obejmują monitorowanie napięcia i prądu na łańcuch PV (A:0x03–0x06), odczyty napięcia/prądu/mocy baterii, stan połączenia BMS, stan sieci on/off, X3 napięcie/prąd/moc sieciową na fazę (12 rejestrów w A:0x6A–0x75), skumulowaną energię oddaną do sieci i pobraną z sieci (przez licznik), całkowitą produkcję energii solarnej, SOC i SOH użytkownika BMS oraz minimalną/maksymalną temperaturę i napięcie ogniw baterii. Możliwości zapisu obejmują sterowanie włączaniem/wyłączaniem systemu, wybór trybu ładowania, ręczne wymuszenie ładowania/rozładowania, minimalne SOC rozładowania, konfigurację ładowania nocnego i zdalne sterowanie mocą z celami mocy czynnej/biernej. Można je dodać w przyszłej aktualizacji szablonu.

Szablon aktualnie odczytuje moc sieciową X1 (jednofazową) w A:0x02. W instalacjach X3 (trójfazowych) moc sieciowa na fazę jest dostępna w rejestrach A:0x6C, A:0x70 i A:0x74, ale nie jest uwzględniona w aktualnym szablonie.

Rozwiązywanie problemów

Brak komunikacji z falownikiem
  1. Sprawdź połączenia kabla RS-485: A+ do A+, B- do B-, GND do GND
  2. Sprawdź, czy rejestr H:0x013E jest ustawiony na 0 (tryb Modbus 485, nie EV Charger)
  3. Potwierdź, że baud rate jest zgodny między falownikiem a TapHome – falownik domyślnie używa 19200, a szablon domyślnie 9600
  4. Sprawdź, czy Slave ID w TapHome odpowiada ustawieniu falownika (domyślnie: 1)
  5. Upewnij się, że żaden inny master Modbus nie jest podłączony do tego samego magistrali RS-485 – Modbus obsługuje tylko jednego mastera
Nieprawidłowy odczyt Battery SOC

Rejestr Battery SOC (A:0x1C) raportuje wartości w jednostkach 1%. Szablon dzieli przez 100 dla zakresu wejścia analogowego TapHome 0–1. Jeśli wyświetlana wartość wydaje się błędna, sprawdź, czy urządzenie TapHome jest skonfigurowane jako AnalogInput (zakres 0–1, nie 0–100).

Konwencja znaku mocy sieciowej

Grid Feed-in Power (A:0x46) używa konwencji znaku, gdzie wartości dodatnie oznaczają eksport (generowanie/oddawanie do sieci), a wartości ujemne oznaczają import (pobór z sieci). Rejestr mocy sieciowej Daily/Actual Energy (A:0x02) może również wykazywać wartości ujemne podczas poboru z sieci.

Różnice rejestrów X1 vs X3

Niektóre rejestry są specyficzne dla modelu. Napięcie sieci (A:0x00), prąd (A:0x01) i moc (A:0x02) to rejestry X1 jednofazowe. Dla trójfazowych modeli X3 odpowiednie odczyty na fazę znajdują się w A:0x6A–0x75. Szablon używa rejestru mocy sieciowej X1, który może nie raportować poprawnie na modelach X3.

Dostępne urządzenia

SolaX Hybrid Gen 4 Moduł
Atrybuty serwisowe
Tryb pracyStan pracy falownika — Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby

SOLAX Hybrid Gen 4

Odczyt (moduł)
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"));
Atrybuty serwisowe
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 baterii Wejście analogowe Tylko do odczytu

Stan naładowania baterii w procentach (0–100%) — wyświetlany jako wejście analogowe 0–1 w TapHome

Rejestr: A:0x1C UInt16 Jednostka: % numeric

SOC baterii

Odczyt poziomu wejściowego
MODBUSR(A, 0x1C, UInt16)/100
Temperatura baterii Czujnik temperatury Tylko do odczytu
Rejestr: A:0x18 UInt16 Jednostka: °C numeric

Temperatura baterii

Odczyt temperatury
MODBUSR(A,0x0018, UInt16)
Energia dzienna / aktualna Licznik energii Tylko do odczytu

Łączy dzienną energię oddaną do sieci (kWh) i moc sieciową w czasie rzeczywistym (kW) — ujemna moc sieciowa oznacza pobór

Rejestr: A:0x50, A:0x02 UInt16, Int16 Jednostka: kWh / kW numeric

Energia dzienna / aktualna

Odczyt całkowitego zużycia
MODBUSR(A, 0x50, UInt16) /10
Odczyt zapotrzebowania
MODBUSR(A,0x02, Int16)/1000
Tryb ładowania Przełącznik wielowartościowy Tylko do odczytu

Aktywny tryb ładowania solarnego — Self Use, Feedin Priority, Backup lub Manual (tylko do odczytu)

Rejestr: H:0x8BH:0x1F UInt16 numeric
Wartości / Stany: Self Use Mode · Feedin Priority · Backup Mode · Manual Mode

Tryb ładowania

Odczyt stanu przełącznika
MODBUSR(H, 0x008B, Uint16)
Zapis stanu przełącznika
#MODBUSW(H, 0x001F, uint16, Mu)
Moc oddawana do sieci Zmienna Tylko do odczytu

Chwilowa moc sieciowa w kW — wartości dodatnie oznaczają eksport, wartości ujemne oznaczają import

Rejestr: A:0x46 LittleEndianInt32 Jednostka: kW numeric

Moc oddawana do sieci

Odczyt
MODBUSR(A, 0x46,LittleEndianInt32)/1000
Moc PV1 Zmienna Tylko do odczytu
Rejestr: A:0x0A UInt16 Jednostka: kW numeric

Moc PV1

Odczyt
MODBUSR(A,0x0a, UInt16)/1000
Moc PV2 Zmienna Tylko do odczytu
Rejestr: A:0x0B UInt16 Jednostka: kW numeric

Moc PV2

Odczyt
MODBUSR(A,0x0b, UInt16)/1000
SOC ładowania nocnego (autokonsumpcja) Ściemniacz Tylko do odczytu

Górna docelowa wartość SOC dla ładowania nocnego w trybie autokonsumpcji (tylko do odczytu, 10–100%)

Rejestr: H:0x94H:0x63 UInt16 Jednostka: % numeric

SOC ładowania nocnego (autokonsumpcja)

Inicjalizacja
#MODBUSWNE(H, 0x0062, Uint16, 1);
Odczyt poziomu
MODBUSR(H, 0x0094, Uint16) / 100
Zapis poziomu
#MODBUSW(H, 0x0063, Uint16, Le * 100)
Energia całkowita Zmienna Tylko do odczytu

Całkowita skumulowana produkcja energii z portu AC falownika w MWh

Rejestr: A:0x52 LittleEndianInt32 Jednostka: MWh numeric

Energia całkowita

Odczyt
MODBUSR(A, 0x52,LittleEndianInt32) / 1000
Połączenie: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Możliwe ulepszenia (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

Źródła