TapHome

SolaX X3 Hybrid Ultra

Modbus RTU
Eingereicht von
Zuletzt aktualisiert: 10. 2026
SolaX X3 Hybrid Ultra

Der SolaX X3 Hybrid Ultra (Gen5) ist ein dreiphasiger Hybrid-PV-/Batterie-Wechselrichter mit einer Nennleistung von 10 kW bis 30 kW. Die TapHome-Vorlage kommuniziert mit dem Wechselrichter über Modbus RTU am RS-485-COM-1-Port (Pins REMOTE_485A / REMOTE_485B) und implementiert die Register-Map des SolaX Modbus-Protokolls V3.29. Sie liest PV-Strang-Leistung, Batterie-Ladezustand und -Temperatur, dreiphasige Netzspannung und -frequenz, lebenslange und tägliche Energiesummen, Einspeiseleistung vom externen Zähler und stellt schreibbare Lademodus, Nachtladungs-SOC (Eigenverbrauch) und maximale Einspeiseleistungsgrenze bereit.

Der X3-Ultra unterstützt Modbus TCP nicht nativ — TCP ist nur über ein SolaX-Überwachungsmodul (Pocket WiFi 3.0, Pocket LAN oder DataHub) verfügbar, das RTU am Port 502 zu TCP überbrückt. Für entfernte Installationen kann TapHome auch über ein RS-485-zu-Ethernet-Gateway eines Drittanbieters (z. B. Waveshare, USR-DR302) angeschlossen werden, das als Modbus RTU-over-TCP konfiguriert ist.

Modelle

Die TapHome-Vorlage deckt die gesamte X3-Ultra-Serie ab. Die PV3- und Batterie-2-SOC-Sensoren funktionieren nur bei der 3-MPPT-/Doppelbatterie-30-kW-Variante.

ModellNennleistung ACMPPT-TrackerHinweise
X3-ULT-15K15 kW2Standard 2-MPPT
X3-ULT-15KP15 kW33-MPPT (Modellcode H3BC)
X3-ULT-19.9K19,9 kW2Standard 2-MPPT
X3-ULT-20K20 kW2Standard 2-MPPT (Modellcode H3BD)
X3-ULT-20KP20 kW33-MPPT
X3-ULT-25K25 kW3Modellcode H3BF
X3-ULT-25KW25 kW3—
X3-ULT-30K30 kW3Doppelbatterie, PV3 aktiv (Modellcode H3BG)
X3-ULT-10K-GLV10 kW—Niederspannungsvariante (GLV)
X3-ULT-15K-GLV15 kW—Niederspannungsvariante (GLV)

Der Modellcode kann zur Laufzeit über das Modul-Attribut Model ausgelesen werden (Register H:0x000E, 4-Zeichen-ASCII-String).

Kompatibilitätsumfang

Die Vorlage implementiert die Teilmenge des SolaX Modbus-Protokolls V3.29, die am häufigsten für das Heim-Energiemanagement verwendet wird — 19 Geräte, 2 modulebene Service-Attribute und eine Service-Aktion. Das vollständige Protokoll stellt deutlich mehr Register bereit; die nützlichsten nicht implementierten Funktionen (phasenweise Netzleistung und -strom, Batteriespannung/-strom/-leistung, BMS-Status, Inselbetriebsstunden, Fernsteuerung der Leistung usw.) können in einem zukünftigen Vorlagen-Update ergänzt werden. Die korrigierte Community-Vorlage im TapHome-Portal ergänzt bereits die Fernsteuerung der Leistung und Schreibvorgänge für Einstellungen, die nur bei einer Wertänderung erfolgen — siehe Bekannte Fehler der offiziellen Vorlage und Fernsteuerung der Leistung weiter unten.

Hardware-Anschluss

Der X3-Ultra hat einen einzigen multifunktionalen COM-1-Port (RJ45-Stil-Stecker mit beschrifteter Kabelhalterung). Dieselben physikalischen Pins erfüllen unterschiedliche Funktionen, je nachdem, in welche beschriftete Position der Kabelhalterung Sie verdrahten. Für die Modbus-Integration eines Drittanbieters verwenden Sie die Position RS485 — die Leitungen REMOTE_485A und REMOTE_485B.

COM-1-Port-Pinout
Pin-Zuordnung des COM-1-Ports des SolaX X3-Ultra für alle sechs beschrifteten Positionen (Parallel-1, Parallel-2, BMS-1, BMS-2, RS485, DRM)

Pin-Zuordnung der RS485-Position (die einzige für TapHome relevante Position):

PinSignalTapHome-Verdrahtung
1REMOTE_485AA+ / D+
2REMOTE_485BB− / D−
3PARALLEL_485AAnicht verwenden (nur SolaX-Zubehör)
4PARALLEL_485AAnicht verwenden (nur SolaX-Zubehör)
5PARALLEL_485BBnicht verwenden (nur SolaX-Zubehör)
6PARALLEL_485BBnicht verwenden (nur SolaX-Zubehör)
7REMOTE_485ADuplikat von Pin 1 (für Daisy-Chain)
8REMOTE_485BDuplikat von Pin 2 (für Daisy-Chain)

Die Pins 3–6 gehören zum SolaX-proprietären PARALLEL_485-Kanal und sind für SolaX-Zubehör reserviert (Adapter Box G2, EV-Charger, DataHub, parallele Wechselrichter). Schließen Sie keinen Modbus-Master eines Drittanbieters an diese Pins an.

Ältere SolaX-Wechselrichter (Gen4 X3-Hybrid) verwendeten Pin 4 = 485A und Pin 5 = 485B. Das X3-Ultra-COM-1-Pinout ist anders — überprüfen Sie vor dem Crimpen immer die Kabelhalterungs-Beschriftung an Ihrer Einheit. Manche Community-Dokumentation verweist noch auf das ältere Gen4-Pinout.

RS-485-Verdrahtung
Installation des RJ45-Terminals in die RS485-Position der COM-1-Kabelhalterung

Verdrahtungsregeln aus dem X3-Ultra-Benutzerhandbuch (Abschnitt 8.6.4):

  • Kabeltyp: Standard-Cat5- oder Cat6-UTP-Twisted-Pair
  • Maximale Länge: 30 m RS-485-Kabel zwischen Wechselrichter und TapHome CCU
  • Polarität ist wichtig: wenn keine Kommunikation, tauschen Sie A und B
  • Ein einziger Modbus-Master: auf dem Bus ist nur ein Master erlaubt. Wenn ein SolaX-Überwachungsmodul die Leitung teilt, ist mit Konflikten zu rechnen

Die COM-1-Kabelhalterung hat dedizierte beschriftete Positionen für jeden Kanal — verdrahten Sie Ihr Cat5/Cat6-Kabel in den Schlitz mit der Beschriftung RS485 (nicht in Parallel-1, Parallel-2, BMS-1, BMS-2 oder DRM).

Anschlussoptionen
  • Direktes Modbus-RTU-CCU: verdrahten Sie das COM-1-RS485-Paar direkt mit dem TapHome Modbus-RTU-CCU. Niedrigste Latenz, empfohlen für Echtzeit-Steuerung.
  • RS-485-zu-Ethernet-Gateway (Modbus RTU-over-TCP): für Installationen, bei denen der Wechselrichter weit vom TapHome Core entfernt ist, verwenden Sie ein Waveshare RS485-zu-Ethernet-, USR-DR302- oder ähnliches Gateway, das als Modbus RTU-over-TCP am Port 502 konfiguriert ist. Der Vorlagen-Importparameter IpAddress ermöglicht dieses Muster.
  • SolaX Pocket WiFi 3.0 / Pocket LAN / DataHub (Modbus TCP): wenn das SolaX-Überwachungsmodul bereits installiert ist, überbrückt es RTU am Port 502 zu TCP mit einem Abfragezyklus von etwa 1 Sekunde — langsamer als direktes RTU und nicht für Echtzeit-Steuerschleifen empfohlen.

Konfiguration

Modbus-Kommunikation am Wechselrichter aktivieren

Navigieren Sie am Wechselrichter-LCD zu:

1
Menu → Setting → Advance Setting → Modbus

Das Menü Advanced Settings erfordert möglicherweise ein Installateur-Passwort. Überprüfen oder setzen Sie Folgendes:

ParameterTapHome-Vorlagen-StandardWechselrichter-StandardBereich
Modbus-Adresse (Slave-ID)111–255
Baudrate19200192009600 / 19200 / 38400 / 57600 / 115200
ParitätNoneNoneNone / Odd / Even
Datenbits88—
Stoppbits111 oder 2

Die Baudrate muss zwischen Wechselrichter und TapHome übereinstimmen. Das Protokoll V3.29 spezifiziert 19200 als X3-Ultra-Standard; einige ältere SolaX-Vorlagen und Dokumentationen erwähnen noch 9600. Falls die Kommunikation fehlschlägt, prüfen Sie zuerst die Baudrate.

Der Wechselrichter kann die Modbus-Slave-Adresse auch über das Holding-Register H:0x00AC und die Baudrate über das Holding-Register H:0x00AD bereitstellen.

Importparameter in TapHome

Beim Import der Vorlage in TapHome müssen zwei Parameter gesetzt werden:

ParameterZweck
IpAddressIP-Adresse des RS-485-zu-TCP-Gateways (oder des SolaX Pocket WiFi/LAN-Überwachungsmoduls). Beim Standardwert belassen, wenn der Wechselrichter direkt mit dem TapHome Modbus-RTU-CCU verbunden ist.
SlaveIdModbus-Slave-Adresse des Wechselrichters (Standard 1). Muss mit der Modbus-Adresseinstellung des Wechselrichters übereinstimmen.
Kommunikations-Timing

Das SolaX Modbus-Protokoll erfordert ein Mindestintervall zwischen aufeinanderfolgenden Anfragen und verwendet individuelle Abfrageintervalle pro Gerät in der Vorlage (von einigen Sekunden für Netzspannung/-frequenz bis zu 80 s für Batterietemperatur). Pollen Sie kein Gerät aggressiv — der Wechselrichter drosselt Anfragen intern.

Gerätefunktionen

Batterieüberwachung
  • Batterie 1 SOC — Ladezustand der primären Batterie als 0–1-Analogeingang (Rohregister in 1-%-Einheiten, geteilt durch 100 für den TapHome-Bereich 0–1)
  • Batterie 2 SOC — Ladezustand der zweiten Batterie, nur bei der X3-ULT-30K Doppelbatterie-Variante funktionsfähig; andere Modelle liefern 0
  • Batterietemperatur — Temperatur des Batterie-Packs in °C, alle 80 Sekunden abgefragt
Solar-PV-Leistung
  • PV1-Leistung (Ost) — DC-Leistung von PV-Strang 1 in kW
  • PV2-Leistung (Ost) — DC-Leistung von PV-Strang 2 in kW
  • PV3-Leistung (West) — DC-Leistung von PV-Strang 3 in kW, nur bei 3-MPPT-Modellen (siehe Modelltabelle) funktionsfähig; andere Modelle liefern 0

Die Suffixe „Ost" / „West" sind eine Richtungsbenennung, die aus der ursprünglichen slowakischen Vorlage übernommen wurde — die PV-Strang-Nummer entspricht dem physischen MPPT-Eingang am Wechselrichter, nicht der tatsächlichen Ausrichtung der Anlage.

Netz- und Energiemessung
  • Netzspannung L1 / L2 / L3 — phasenweise Netzspannung in Volt (Register A:0x006A, A:0x006E, A:0x0072)
  • Netzfrequenz L1 / L2 / L3 — phasenweise Netzfrequenz in Hertz (Register A:0x006D, A:0x0071, A:0x0075)
  • Netzeinspeisung (Zähler) — gedacht als Einspeiseleistung vom externen SolaX-Zähler / CT, aber die offizielle Vorlage liest das Register A:0x0046 mit falscher Wortreihenfolge (Int32 statt LittleEndianInt32), sodass der Wert bedeutungslos ist (zum Beispiel −7340,033 statt −0,117 kW). Es ist kein Alias von Netz-Bezug / -Einspeisung — verwenden Sie dieses Gerät oder korrigieren Sie das Skript wie unter Bekannte Fehler der offiziellen Vorlage beschrieben
  • Netz-Bezug / -Einspeisung — die korrekte Ablesung der Zähler-/CT-Leistung (A:0x0046, LittleEndianInt32) in kW; positiv = Einspeisen, negativ = Bezug
  • Tages-/Aktuelle Wechselrichter-Erzeugung — kombiniert in der offiziellen Vorlage die heutige Wechselrichter-Energie (Register A:0x0050, ein Tageszähler, der jede Nacht zurückgesetzt wird) mit dem Register A:0x0002, das SolaX nur für einphasige X1-Modelle dokumentiert — am X3-Ultra liefert es 0. Die korrigierten Skripte finden Sie unter Bekannte Fehler der offiziellen Vorlage
  • Gesamt erzeugte Energie — kumulative Gesamtenergie, die vom AC-Port des Wechselrichters ins Netz eingespeist wurde, in kWh
Lade- und Einspeisesteuerung (schreibbar)
  • Lademodus — Betriebsmodus des Batterieladers: Self Use, Feed-in Priority, Backup oder Manual
  • Nachtladungs-SOC (Eigenverbrauch) — oberer SOC-Zielwert (10–100 %) für das Laden der Batterie aus dem Netz während der Nacht im Eigenverbrauchsmodus
  • Max. Einspeiseleistungs-Grenze — maximal zulässige Einspeiseleistung ins Netz in kW (kein Prozentsatz): Das Register zählt bei X3-Modellen in 10-W-Schritten, und die Vorlage teilt durch 100

Für alle drei oben genannten schreibbaren Geräte gilt das EEprom-Schreiblimit (Lademodus → SH:0x001F, Nachtladungs-SOC → SH:0x0063, Max. Einspeiseleistung → SH:0x0042). Die zugrundeliegenden Register sind EEprom-gestützt mit begrenzten Schreibzyklen — häufige Schreibvorgänge (alle paar Sekunden in einer Automatisierungsschleife) beschädigen das EEprom des Wechselrichters dauerhaft. Verwenden Sie nur manuelle Änderungen oder geplante Schreibvorgänge mit niedriger Frequenz.

Modulebene-Attribute und -Aktionen
  • Betriebsmodus (Service-Attribut) — Betriebszustand des Wechselrichters als Text: Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby
  • Model (Service-Attribut) — Modellcode des Wechselrichters als 4-Zeichen-ASCII-String (H3BC = 15K/15KP, H3BD = 19,9K/20K/20KP, H3BF = 25K, H3BG = 30K)
  • Admin entsperren (Service-Aktion) — schreibt die Konstante 2014 in SH:0x0000, um die erweiterten Wechselrichter-Einstellungen zu entsperren (selten erforderlich, nur zur Diagnose)
Fehlererkennung

Das Modul-ReadScript überwacht das Betriebsmodus-Register (A:0x0009) und meldet einen TapHome-Systemfehler, wenn der Wechselrichter in den Zustand 3 (Fault) oder 4 (Permanent Fault) eintritt. Zwei Fehlerregister werden Bit für Bit analysiert:

  • Wechselrichter-Fehlercodes (32-Bit, A:0x0040–A:0x0041) — 31 individuelle Fehler, darunter Netzspannungs-/Frequenzfehler, PV-Spannungsfehler, Batteriefehler, Isolationsfehler, Übertemperatur, Überstromschutz, Relaisfehler und Kommunikationsfehler
  • Manager-Fehlercodes (16-Bit, A:0x0043) — 11 Fehlerbits, darunter Leistungstyp-Fehler, EEPROM-Fehler, NTC-Sensor-Probleme, Batterietemperatur-Warnungen, Zählerfehler und Lüfterfehler

Einzelne Fehler erscheinen als diskrete Fehler im TapHome-Systemprotokoll, sodass Installateure das fehlerhafte Subsystem identifizieren können, ohne das Wechselrichter-LCD ablesen zu müssen.

Bekannte Fehler der offiziellen Vorlage

Die offizielle TapHome-Vorlage für den X3-Ultra liest mehrere Register falsch und schreibt eine Einstellung periodisch (geprüft anhand des SolaX Modbus-Protokolls V3.29 und V001.02 sowie anhand von Werten in installierten Anlagen). Ein aus der offiziellen Vorlage importiertes Modul aktualisiert sich nicht selbst, wenn sich die Vorlage ändert. Korrigieren Sie entweder die Skripte des bestehenden Moduls und seiner Geräte von Hand, oder importieren Sie die korrigierte Community-Vorlage aus dem TapHome-Portal: SolaX X3-Ultra Hybrid Inverter — monitoring and power control (anmelden, XML herunterladen und als neues Modul importieren).

WoOffizielles SkriptKorrigiertes SkriptAuswirkung des Fehlers
Modul — Leseskriptvar x3 := MODBUSR(A, 0x0040, Uint32);var x3 := MODBUSR(A, 0x0040, LittleEndianUint32);Die beiden Hälften des 32-Bit-Fehlercodes sind vertauscht: Ein Fehler in Bit 1 (Grid Lost Fault) wird als Bit 17 (Bat Power Low) gemeldet. Parallel Fault (Bit 21) und Hard Limit Fault (Bit 22) werden überhaupt nicht gemeldet
Netzeinspeisung (Zähler)MODBUSR(A,0x0046, Int32)/1000MODBUSR(A, 0x0048, LittleEndianUint32) / 100 — Gesamtenergie ins Netz in kWhDie Leistung liest bereits Netz-Bezug / -Einspeisung korrekt; dieses Gerät zeigt eine bedeutungslose Zahl. Gesamtenergie aus dem Netz: MODBUSR(A, 0x004A, LittleEndianUint32) / 100
Tages-/Aktuelle Wechselrichter-Erzeugung — GesamtverbrauchMODBUSR(A, 0x50, UInt16) /10MODBUSR(A, 0x0094, LittleEndianUint32) / 100x0050 ist ein Tageszähler, der jede Nacht auf 0 fällt; 0x0094 ist die gesamte PV-Energie
Tages-/Aktuelle Wechselrichter-Erzeugung — MomentanleistungMODBUSR(A,0x02, Int16)/1000(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16) + MODBUSR(A, 0x0124, UInt16)) / 10000x0002 ist die Netzleistung einphasiger X1-Modelle und liefert am X3-Ultra 0
BatterietemperaturMODBUSR(A,0x0018, UInt16)MODBUSR(A, 0x0018, Int16)Unter 0 °C zeigt die offizielle Vorlage etwa 65535 °C
Nachtladungs-SOC (Eigenverbrauch) — SchreibskriptMODBUSW(SH, 0x0063, Uint16, Le * 100) mit eingeschaltetem periodischem SchreibenIF(MODBUSR(H, 0x0094, UInt16) != ROUND(Le * 100), MODBUSW(SH, 0x0063, Uint16, ROUND(Le * 100)));Das offizielle Gerät schreibt den Nachtladungs-Zielwert bei jeder Abfrage (etwa alle 55 s) in den Wechselrichter — 0x0063 ist ein EEPROM-Register mit etwa 1 Million Schreibzyklen. Mit dem korrigierten Skript schreibt es nur, wenn sich der Wert tatsächlich ändert

Das Register H:0x0094 ist auch im Protokoll V3.29 der Ziel-Ladezustand der Nachtladung (SelfUse_NightCharge_UpperSoC); die Nachtladung aus dem Netz wird im niederwertigen Byte von H:0x0093 eingeschaltet (Schreibregister 0x0062).

Fernsteuerung der Leistung

Die korrigierte Community-Vorlage ergänzt das Gerät Remote control - AC power target. Es nutzt den SolaX-Fernsteuerungsmodus (VPP) 1: Ein positiver Zielwert in kW lässt den Wechselrichter an seinem AC-Port Leistung aufnehmen (er lädt die Batterie, aus dem Netz, wenn die PV-Leistung nicht reicht), ein negativer Zielwert lässt ihn Leistung abgeben (er entlädt die Batterie, und was das Haus nicht verbraucht, geht ins Netz); 0 beendet die Fernsteuerung. Die Vorlage entsperrt bei Bedarf die Wechselrichter-Einstellungen mit dem Standardpasswort 2014 und wiederholt den Befehl alle 60 s. Die Fernsteuerung startet nicht, solange sich der Wechselrichter im Arbeitsmodus Manual befindet.

SolaX kennzeichnet die Fernsteuerungsregister (0x007C–0x0088) in seinem Protokoll nicht als EEPROM-Register, bestätigt das Gegenteil aber auch nicht schriftlich. Diese Vorlage stützt sich auf die Erfahrung der Home-Assistant- und openHAB-Communitys, die diese Register alle paar Sekunden bis Minuten schreiben. Die oben genannten Einstellungen sind EEPROM-Register (von SolaX mit ★ gekennzeichnet, etwa 1 Million Schreibzyklen): Ändern Sie sie selten und nie aus häufigen Automatisierungen — für das Laden und Entladen nach Spotpreisen verwenden Sie den AC-Leistungszielwert der Fernsteuerung.

Fehlerbehebung

Keine Kommunikation mit dem Wechselrichter
  1. Überprüfen Sie, dass die RS-485-Verdrahtung an den REMOTE_485A / REMOTE_485B-Pins liegt (1+2 oder 7+8 an der COM-1-RS485-Position), nicht an den PARALLEL_485-Pins 3–6
  2. Prüfen Sie, dass die Baudrate zwischen Wechselrichter (Menu → Setting → Advance Setting → Modbus) und TapHome-Modul übereinstimmt — beide müssen standardmäßig 19200 sein
  3. Bestätigen Sie, dass die Slave-ID übereinstimmt (Standard 1)
  4. Überprüfen Sie, dass nur ein Modbus-Master am RS-485-Bus angeschlossen ist — Modbus unterstützt keinen Multi-Master
  5. Tauschen Sie die A- und B-Adern, falls die Kabelpolarität unsicher ist
  6. Bestätigen Sie, dass das Kabel 30 m Gesamt-RS-485-Länge nicht überschreitet
PV3 oder Batterie-2-SOC liest null

Diese Geräte funktionieren nur am X3-ULT-30K (3-MPPT-/Doppelbatterie-Variante). Bei kleineren Modellen liefern die Register A:0x0124 (PV3-Leistung) und A:0x012D (Batterie-2-SOC) null. Verbergen Sie die nicht verwendeten Geräte in der TapHome-UI für Nicht-30K-Installationen.

Batterietemperatur liest einen unerwartet hohen Wert

Das Batterietemperatur-Register (A:0x0018) wird von der offiziellen Vorlage als UInt16 gelesen, der Wert ist jedoch vorzeichenbehaftet. Temperaturen unter null (z. B. −1 °C) laufen zu großen positiven Werten über (z. B. 65535). Ändern Sie das Skript in MODBUSR(A, 0x0018, Int16) — siehe Bekannte Fehler der offiziellen Vorlage.

Schreibvorgänge in Lademodus / Nachtladungs-SOC / Max. Einspeiseleistung wirken sich nicht aus

Diese Register sind EEprom-gestützt und der Wechselrichter begrenzt Schreibvorgänge, um das EEprom zu schützen. Stellen Sie sicher, dass die Schreibvorgänge selten sind (manuell oder geplant, nicht in einer engen Automatisierungsschleife). Einige Firmware-Versionen erfordern auch, dass der Lademodus auf Manual (3) eingestellt ist, bevor bestimmte erzwungene Lade-/Entladungs-Submodi reagieren.

Modbus TCP über das SolaX-Überwachungsmodul ist langsam

Pocket WiFi 3.0 / Pocket LAN / DataHub überbrücken RTU zu TCP mit einem Abfragezyklus von etwa 1 Sekunde und handhaben nur einen Modbus-TCP-Client gleichzeitig. Wenn SolaX-Cloud-Monitoring ebenfalls Daten zieht, ist mit Konflikten zu rechnen. Für Echtzeit-Steuerung (Frequenzantwort, Peak Shaving) verwenden Sie direktes Modbus RTU oder ein dediziertes RS-485-zu-Ethernet-Gateway eines Drittanbieters.

Verfügbare Geräte

SolaX X3 Hybrid Ultra Modul
Serviceattribute
BetriebsmodusBetriebszustand des Wechselrichters — Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle, Standby
ModellModellcode des Wechselrichters als 4-Zeichen-ASCII-String (H3BC = 15K/15KP, H3BD = 19,9K/20K/20KP, H3BF = 25K, H3BG = 30K)
Serviceaktionen
Admin entsperrenSchreibt die Konstante 2014 in das Register SH:0x0000, um die erweiterten Wechselrichter-Einstellungen zu entsperren — selten erforderlich, nur zur Diagnose

FVE SOLAX Hybrid Ultra

Lesen (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"));
Serviceattribute
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)
Serviceaktionen
Unlock admin
MODBUSW(SH, 0x0000, Uint16, 2014);
Batterie 1 SOC Analogeingang Nur lesen

Ladezustand der primären Batterie in Prozent (0–100 %), in TapHome als Analogeingang 0–1 angezeigt

Register: A:0x001C UInt16 Einheit: % numeric

Batterie 1 SOC

Eingangslevel lesen
MODBUSR(A, 0x1C, UInt16)/100
Batterie 2 SOC Analogeingang Nur lesen

Ladezustand der zweiten Batterie in Prozent — nur bei der Doppelbatterie-Variante X3-ULT-30K funktionsfähig; andere Modelle liefern 0

Register: A:0x012D UInt16 Einheit: % numeric

Batterie 2 SOC

Eingangslevel lesen
MODBUSR(A, 0x012D, Uint16) / 100
Gesamt erzeugte Energie Variable Nur lesen

Kumulative Gesamtenergie, die vom AC-Port des Wechselrichters ins Netz eingespeist wurde, in kWh

Register: A:0x0052 LittleEndianInt32 Einheit: kWh numeric

Gesamt erzeugte Energie

Lesen
MODBUSR(A, 0x52,LittleEndianInt32) / 10
Tages-/Aktuelle Wechselrichter-Erzeugung Stromzähler Nur lesen

Offizielle Vorlage: heutige Wechselrichter-Energie (0x0050, wird jede Nacht zurückgesetzt) und Register 0x0002, das nur für X1-Modelle dokumentiert ist und am X3-Ultra 0 liefert; die korrigierten Skripte lesen die gesamte PV-Energie (0x0094) und die Leistung PV1 + PV2 + PV3

Register: A:0x0050, A:0x0002 UInt16, Int16 Einheit: kWh / kW numeric

Tages-/Aktuelle Wechselrichter-Erzeugung

Gesamtverbrauch lesen
MODBUSR(A, 0x50, UInt16) /10
Bedarf lesen
MODBUSR(A,0x02, Int16)/1000
Netzeinspeisung (Zähler) Variable Nur lesen

Die offizielle Vorlage liest das Zähler-/CT-Leistungsregister 0x0046 mit falscher Wortreihenfolge (Int32), daher ist der Wert bedeutungslos; verwenden Sie Netz-Bezug / -Einspeisung oder ändern Sie das Skript auf die Energie ins Netz (0x0048, LittleEndianUint32, / 100)

Register: A:0x0046 Int32 Einheit: kW numeric

Netzeinspeisung (Zähler)

Lesen
MODBUSR(A,0x0046, Int32)/1000
Netzfrequenz L1 Variable Nur lesen
Register: A:0x006D Int16 Einheit: Hz numeric

Netzfrequenz L1

Lesen
MODBUSR(A, 0x006D, Int16)/100
Netzfrequenz L2 Variable Nur lesen
Register: A:0x0071 Int16 Einheit: Hz numeric

Netzfrequenz L2

Lesen
MODBUSR(A,0x0071, Int16)/100
Netzfrequenz L3 Variable Nur lesen
Register: A:0x0075 Int16 Einheit: Hz numeric

Netzfrequenz L3

Lesen
MODBUSR(A,0x0075, Int16)/100
Lademodus Mehrwertschalter

Betriebsmodus des Batterieladers — Self Use, Feed-in Priority, Backup oder Manual. Schreibvorgang ist EEprom-basiert: nicht häufig aus Automatisierungen ändern

Register: H:0x008B → SH:0x001F UInt16 numeric
Werte / Zustände: ON · OFF

Lademodus

Schaltzustand lesen
MODBUSR(H, 0x008B, Uint16)
Schaltzustand schreiben
MODBUSW(SH, 0x001F, uint16, Mu)
Netzspannung L1 Variable Nur lesen
Register: A:0x006A Int16 Einheit: V numeric

Netzspannung L1

Lesen
MODBUSR(A,0x006A, Int16)/10
Netzspannung L2 Variable Nur lesen
Register: A:0x006E Int16 Einheit: V numeric

Netzspannung L2

Lesen
MODBUSR(A, 0x006E, Int16)/10
Netzspannung L3 Variable Nur lesen
Register: A:0x0072 Int16 Einheit: V numeric

Netzspannung L3

Lesen
MODBUSR(A,0x0072, Int16)/10
Netz-Bezug / -Einspeisung Variable Nur lesen

Echtzeit-Netzeinspeisung / -bezug vom externen Zähler (0x0046, korrekt als LittleEndianInt32 gelesen); positive Werte sind Einspeisung, negative Werte sind Bezug

Register: A:0x0046 LittleEndianInt32 Einheit: kW numeric

Netz-Bezug / -Einspeisung

Lesen
MODBUSR(A, 0x46,LittleEndianInt32)/1000
PV1-Leistung (Ost) Variable Nur lesen

DC-Leistung des PV-Strangs 1, typischerweise das ostorientierte Feld in der ursprünglichen slowakischen Vorlagenbenennung

Register: A:0x000A UInt16 Einheit: kW numeric

PV1-Leistung (Ost)

Lesen
MODBUSR(A,0x0a, UInt16)/1000
PV2-Leistung (Ost) Variable Nur lesen

DC-Leistung des PV-Strangs 2, typischerweise das ostorientierte Feld in der ursprünglichen slowakischen Vorlagenbenennung

Register: A:0x000B UInt16 Einheit: kW numeric

PV2-Leistung (Ost)

Lesen
MODBUSR(A,0x0b, UInt16)/1000
PV3-Leistung (West) Variable Nur lesen

DC-Leistung des PV-Strangs 3 — nur bei der 3-MPPT-Variante X3-ULT-30K funktionsfähig; andere Modelle liefern 0

Register: A:0x0124 UInt16 Einheit: kW numeric

PV3-Leistung (West)

Lesen
MODBUSR(A, 0x0124, Uint16)/1000
Nachtladungs-SOC (Eigenverbrauch) Dimmer

Oberer SOC-Zielwert (10–100 %) für die Nachtladung der Batterie aus dem Netz im Eigenverbrauchsmodus. Schreibvorgang ist EEprom-basiert; die offizielle Vorlage schreibt ihn bei jeder Abfrage (etwa alle 55 s) — verwenden Sie das Schreibskript, das zuerst mit 0x0094 vergleicht

Register: H:0x0094 → SH:0x0063 UInt16 Einheit: % numeric

Nachtladungs-SOC (Eigenverbrauch)

Level lesen
MODBUSR(H, 0x0094, Uint16) / 100
Level schreiben
MODBUSW(SH, 0x0063,  Uint16, Le * 100)
Batterietemperatur Temperatursensor Nur lesen
Register: A:0x0018 UInt16 Einheit: °C numeric

Batterietemperatur

Temperatur lesen
MODBUSR(A,0x0018, UInt16)
Max. Einspeiseleistungs-Grenze Variable

Maximal zulässige Einspeiseleistung ins Netz in kW (das Register zählt bei X3-Modellen in 10-W-Schritten). Schreibvorgang ist EEprom-basiert: nicht häufig aus Automatisierungen ändern

Register: H:0x00B6 → SH:0x0042 UInt16 Einheit: kW numeric

Max. Einspeiseleistungs-Grenze

Lesen
MODBUSR(H, 0x00B6, Uint16)/100
Schreiben
MODBUSW(SH, 0x0042, Uint16, Va*100)
Verbindung: Modbus RTU • 19200 baud• 8N1 • Slave ID: $[SlaveId]
Mögliche Verbesserungen (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

Quellen

Haben Sie ein Problem mit dieser Gerätevorlage gefunden?

Sagen Sie uns, was nicht funktioniert, was fehlt oder wie sich die Vorlage verhalten sollte. Ihr Feedback hilft uns, den Katalog genau zu halten.

Von TapHome verifiziert

Möchtest du das in deinem TapHome Core verwenden?

Öffne diese Vorlage im Kundenportal, um sie auf eine deiner Wohnungen anzuwenden, oder entwirf eine Anpassung und reiche sie an den Katalog ein.

Im Portal öffnen