TapHome
Społeczność Beta Energia i pomiar

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

Szablon społeczności dla falowników SolaX X1-HYBRID i X3-HYBRID Gen 4 przez Modbus RTU po RS-485: oficjalny szablon TapHome dla Gen 4 z poprawionymi odczytami — kolejność słów kodu błędu, skala energii całkowitej, licznik produkcji PV i temperatura baterii ze znakiem. Odczytuje SOC i temperaturę baterii, moc PV1/PV2, oddawanie do sieci, sumy energii, tryb ładowania i SOC ładowania nocnego; zapis pozostaje wyłączony. 19200 baud, 8N1, Slave ID 1.

SolaXModbus RTU9 urządzeńRewizja 1.0 Ostatnia aktualizacja: 12 listopada 2026

Dodane przez Martin Keller

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

Import do aplikacji TapHomeSprzęt › Modbus › Dodaj z szablonu

Pobierz szablon
Na tej stronie

Poradnik integracji

SolaX X1-HYBRID i X3-HYBRID Gen 4 to falowniki hybrydowe do magazynowania energii z PV i baterią, dostępne w wersjach jednofazowych (3–7,5 kW) i trójfazowych (5–15 kW). Ten szablon społeczności to oficjalny szablon TapHome dla SolaX Gen 4 z odczytami poprawionymi według protokołu SolaX Modbus (V3.21 i V001.02). Komunikuje się przez Modbus RTU po RS-485 i odczytuje stan naładowania oraz temperaturę baterii, moc łańcuchów PV, przepływ mocy sieciowej, sumy energii, tryb ładowania i SOC ładowania nocnego. Nazwy urządzeń są takie same jak w oficjalnym szablonie, więc starszy import można porównać urządzenie po urządzeniu. Wszystkie skrypty zapisu pozostają zakomentowane, tak jak w oficjalnym szablonie, dlatego szablon działa tylko do odczytu.

Moduł analizuje również 32-bitowy kod błędu falownika i 16-bitowy kod błędu menedżera i zgłasza każdą usterkę w TapHome z własnym kodem błędu.

Jak zdobyć szablon

Szablony społeczności nie są oferowane na liście szablonów w aplikacji TapHome. Zaloguj się na portal.taphome.com, pobierz XML tego szablonu i zaimportuj go do jednostki sterującej Core. Moduł zaimportowany wcześniej z oficjalnego szablonu SolaX Hybrid X1/X3 Gen 4 nie aktualizuje się sam — zaimportuj ten szablon jako nowy moduł albo popraw skrypty starego modułu tak, jak pokazuje tabela w sekcji „Co poprawia ten szablon” poniżej.

Podłączenie sprzętu

Falownik SolaX Gen 4 ma na dolnym panelu port COM RS-485 do komunikacji Modbus RTU. 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) — podłączenie zalecane dla niezawodnej komunikacji

Instrukcja SolaX wymaga kabla sieciowego CAT5E zaciśniętego we wtyk RJ45 dostarczony z falownikiem oraz długości kabla COM nie większej niż 30 m.

Pinów 3 (+13V) i 6 (GND) nie wolno łączyć ze sobą. Zaizoluj nieużywane piny.

Sam falownik 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 ten szablon.

W instalacjach, 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.

Tryb ładowania i ustawienia ładowania nocnego to rejestry EEPROM w falowniku (oznaczone przez SolaX symbolem ★, około 1 miliona cykli zapisu). Nadmierne operacje zapisu mogą spowodować nieodwracalne uszkodzenie sprzętu — nigdy nie włączaj na nich zapisu, który działa cyklicznie. Ten szablon ma wszystkie skrypty zapisu wyłączone.

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, konfigurowalny na wyświetlaczu falownika. Szablon pyta o niego jako o jedyny parametr importu, Modbus Slave ID (domyślnie 1)
  2. Baud rate – 19200 baud, ustawienie fabryczne SolaX; szablon również używa 19200. Jeśli falownik ustawiono na inną prędkość (na przykład 9600), zmień ustawienie falownika albo prędkość interfejsu TapHome, aby obie były zgodne
  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. Ustawienia zaawansowane wymagają hasła instalatora, które udostępnia sprzedawca. Baud rate można też 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).

W TapHome szablon importuje się następnie na interfejsie RS-485 Modbus RTU jednostki sterującej Core, ustawionym na tę samą prędkość i format danych, z Slave ID falownika.

Taktowanie komunikacji

Protokół wymaga minimalnego odstępu 1 sekundy między kolejnymi instrukcjami Modbus oraz limitu czasu przerwy między znakami wynoszącego co najmniej 100 ms. Limit czasu odpowiedzi wynosi 1 sekundę. Szablon używa indywidualnych interwałów odpytywania 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 służy do komunikacji Modbus (wartość 0), czy do komunikacji z ładowarką EV (wartość 1). Upewnij się, że do integracji z TapHome jest ustawiony na 0 (Modbus 485).

Możliwości urządzenia

Monitorowanie baterii

  • Bateria (SOC) – odczytuje stan naładowania baterii (A:0x001C) jako procent, co 15 sekund. 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:0x0018) w stopniach Celsjusza jako wartość ze znakiem (Int16), więc temperatury poniżej 0 °C są wyświetlane poprawnie. Odpytywanie co 80 sekund

Moc solarna PV

  • PV1 – moc wyjściowa DC łańcucha PV 1 (A:0x000A), wyświetlana w kW po przeliczeniu z watów (/1000)
  • PV2 – moc wyjściowa DC łańcucha PV 2 (A:0x000B), wyświetlana w kW po przeliczeniu z watów (/1000)

PV1 i PV2 to zwykłe wartości bez typu energii, więc w Energy Dashboard nie są liczone podwójnie.

Moc sieciowa i pomiar energii

  • Purchase/Feed to Grid – chwilowa moc sieciowa (A:0x0046–0x0047, LittleEndianInt32) w kW, zwykła wartość bez typu energii. Wartości dodatnie oznaczają oddawanie energii do sieci, wartości ujemne pobór z sieci. Falownik pobiera tę wartość z podłączonego do niego licznika lub przekładnika prądowego (CT)
  • Daily/Actual Energy – licznik produkcji PV dla Energy Dashboard. Jego moc to PV1 + PV2 (A:0x000A + A:0x000B) w kW, a jego suma to całkowita energia PV (A:0x0094–0x0095, SolarEnergyTotal, jednostki 0,1 kWh) w kWh. Wbrew nazwie suma nie zeruje się w nocy
  • Total Energy – całkowita skumulowana energia oddana przez port AC falownika od początku pracy (A:0x0052–0x0053, LittleEndianUint32, jednostki 0,1 kWh), wyświetlana w kWh

Tryb ładowania i ładowanie nocne

  • Charger Use Mode – odczytuje aktywny tryb ładowania solarnego (H:0x008B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) lub Manual Mode (3). Rejestr zapisu (H:0x001F) istnieje w szablonie, ale jest zakomentowany, dlatego wartość jest tylko do odczytu
  • SelfUse Night Charge – odczytuje górny docelowy SOC ładowania nocnego w trybie Self Use (H:0x0094) jako procent. Rejestr zapisu (H:0x0063) i rejestr włączania (H:0x0062) są oba zakomentowane, więc konfiguracji ładowania nocnego nie można zmienić przez TapHome

Wykrywanie usterek

Skrypt odczytu modułu monitoruje tryb pracy falownika (A:0x0009) i dwa rejestry błędów. Każda usterka ma własny kod błędu:

  • Usterki Run mode – błąd 1, gdy tryb pracy wynosi 3 (Fault), błąd 2, gdy wynosi 4 (Permanent Fault)
  • Kod błędu falownika (A:0x0040–0x0041, LittleEndianUint32) – 30 pojedynczych usterek z kodami 100–131 (100 + numer bitu), w tym usterki napięcia i częstotliwości sieci, usterki napięcia PV, usterki baterii, usterki izolacji, przegrzanie, zabezpieczenie nadprądowe, usterki przekaźnika i błędy komunikacji. Nazwy usterek odpowiadają tabeli X3 protokołu SolaX
  • Kod błędu menedżera (A:0x0043) – kody 200–211 (200 + numer bitu) dla usterek typu mocy, błędów EEPROM, problemów z czujnikami NTC, za niskiej/za wysokiej temperatury baterii, usterek licznika, przekaźnika bypass i wentylatora. Port OC Warning (201) jest zgłaszany jako ostrzeżenie, pozostałe jako błędy

Atrybut serwisowy 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.

Co poprawia ten szablon

Oficjalny szablon TapHome SolaX Hybrid X1/X3 Gen 4 błędnie odczytuje kilka rejestrów (sprawdzone na podstawie protokołu SolaX Modbus V3.21 i V001.02). Ten szablon je poprawia:

GdzieOficjalny szablonTen szablonSkutek błędu w oficjalnym szablonie
Moduł — skrypt odczytuvar x3 := MODBUSR(A, 0x0040, Uint32);VAR inv := MODBUSR(A, 0x0040, LittleEndianUint32);Dwie połowy 32-bitowego kodu błędu są zamienione: usterka w bicie 1 (Grid Lost Fault) jest zgłaszana jako bit 17 (Bat Power Low)
Total EnergyMODBUSR(A, 0x52, LittleEndianInt32) / 1000MODBUSR(A, 0x0052, LittleEndianUint32) / 10Wartość 100× za mała (rejestr liczy w jednostkach 0,1 kWh)
Daily/Actual Energy — sumaMODBUSR(A, 0x50, UInt16) /10MODBUSR(A, 0x0094, LittleEndianUint32) / 100x0050 to dzienny licznik portu AC falownika, który każdej nocy spada do 0; 0x0094 to całkowita energia PV
Daily/Actual Energy — mocMODBUSR(A,0x02, Int16)/1000(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16)) / 10000x0002 to moc sieciowa jednofazowych modeli X1, a nie produkcja PV; w wielu urządzeniach X3 odczytuje 0
Battery TemperatureMODBUSR(A,0x0018, UInt16)MODBUSR(A, 0x0018, Int16)Poniżej 0 °C oficjalny szablon pokazuje około 65535 °C
Prędkość interfejsu9600 baud19200 baud19200 to ustawienie fabryczne SolaX

Z poprawionymi skryptami licznik Daily/Actual Energy mierzy produkcję PV (PV1 + PV2), czyli to, czego oczekuje jego typ energii w Energy Dashboard. PV1, PV2 i Purchase/Feed to Grid nie mają już typu energii — są zwykłymi wartościami. Wszystkie zapisy pozostają wyłączone, tak jak w oficjalnym 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 – szablon używa 19200, wartości domyślnej falownika; falownik ustawiony na 9600 wymaga zmiany po jednej ze stron
  4. Sprawdź, czy Modbus Slave ID w TapHome odpowiada ustawieniu falownika (domyślnie: 1)
  5. Upewnij się, że do tej samej magistrali RS-485 nie jest podłączony żaden inny master Modbus – Modbus obsługuje tylko jednego mastera

Wartości wyglądają jak w oficjalnym szablonie

Gdy Total Energy jest 100× za mała, Daily/Actual Energy spada do 0 każdej nocy albo Battery Temperature pokazuje około 65535 °C poniżej zera, moduł nadal wykonuje skrypty oficjalnego szablonu. Moduł nie aktualizuje się sam z nowszego szablonu — zaimportuj ten szablon jako nowy moduł albo popraw skrypty tak, jak pokazuje tabela powyżej.

Nieprawidłowy odczyt Bateria (SOC)

Rejestr Bateria (SOC) (A:0x001C) 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 wejście analogowe (zakres 0–1, nie 0–100).

Konwencja znaku mocy sieciowej

Purchase/Feed to Grid (A:0x0046) używa konwencji znaku, w której wartości dodatnie oznaczają oddawanie energii (eksport do sieci), a wartości ujemne pobór (zużycie z sieci). Falownik otrzymuje tę wartość ze swojego licznika lub przekładnika prądowego (CT), dlatego zależy ona od prawidłowo podłączonego licznika lub przekładnika.

Różnice między X1 a X3

Szablon odczytuje moc PV (A:0x000A i A:0x000B) zamiast rejestru mocy sieciowej X1, więc licznik Daily/Actual Energy działa tak samo w modelach X1 i X3. Nazwy usterek odpowiadają tabeli X3 protokołu SolaX. W falowniku X1 niektóre bity usterek oznaczają inne usterki — bit 9 i większość bitów od bitu 15 w górę (na przykład bit 15 to w X1 Missed CT Fault, a w X3 Off-grid Overload).

Dostępne urządzenia 9

Te urządzenia pojawią się w TapHome po imporcie.

SolaX X3-Hybrid G4 Moduł
Atrybuty serwisowe
Run mode

SolaX X3-Hybrid G4

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

${deviceType_BatterySOC}

Odczyt poziomu wejściowego
MODBUSR(A, 0x001C, UInt16) / 100
Battery Temperature Czujnik temperatury

Battery Temperature

Odczyt temperatury
MODBUSR(A, 0x0018, Int16)
Daily/Actual Energy Licznik energii

Daily/Actual Energy

Odczyt całkowitego zużycia
MODBUSR(A, 0x0094, LittleEndianUint32) / 10
Odczyt zapotrzebowania
(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16)) / 1000
Charger Use Mode Przełącznik wielowartościowy
Wartości / Stany: Self Use Mode · Feedin Priority · Backup Mode · Manual Mode

Charger Use Mode

Odczyt stanu przełącznika
MODBUSR(H, 0x008B, UInt16)
Zapis stanu przełącznika
#MODBUSW(SH, 0x001F, Uint16, Mu)
Purchase/Feed to Grid Zmienna

Purchase/Feed to Grid

Odczyt
MODBUSR(A, 0x0046, LittleEndianInt32) / 1000
PV1 Zmienna

PV1

Odczyt
MODBUSR(A, 0x000A, UInt16) / 1000
PV2 Zmienna

PV2

Odczyt
MODBUSR(A, 0x000B, UInt16) / 1000
SelfUse Night Charge Ściemniacz

SelfUse Night Charge

Inicjalizacja
#MODBUSWNE(SH, 0x0062, Uint16, 1);
Odczyt poziomu
MODBUSR(H, 0x0094, UInt16) / 100
Zapis poziomu
#MODBUSW(SH, 0x0063, Uint16, Le * 100)
Total Energy Zmienna

Total Energy

Odczyt
MODBUSR(A, 0x0052, LittleEndianUint32) / 10
Połączenie: Modbus RTU • 19200 baud• 8N1 • Slave ID: $[SlaveId]

Parametry importu

Te wartości podajesz podczas importu pliku XML.

Pytanie w aplikacjiDomyślnie
Modbus Slave ID1

Znalazłeś problem z tym szablonem urządzenia?

Napisz nam, co nie działa, czego brakuje lub jak powinien zachowywać się szablon. Twoja opinia pomaga nam utrzymać katalog dokładnym.

Szablon · portal TapHome SolaX X1/X3-Hybrid G4 — corrected monitoring (Modbus RTU) Otwórz ten szablon w portalu klienta, aby zastosować go w swoim domu, lub zaproponuj modyfikację i wyślij ją z powrotem do katalogu. Modbus RTU Zobacz w portalu TapHome