Zum Inhalt

Sungrow SH10RT-20 — Modbus Register-Referenz

Stand: 2026-04-02

Verbindung

  • Host: 192.168.100.75 (WiNet-S WLAN) oder 192.168.100.28 (WiNet-S LAN)
  • Port: 502 (Modbus TCP)
  • Device ID: 1
  • Beide IPs liefern identische Daten

Register-Bereiche

Der SH10RT hat drei Register-Bereiche:

Bereich Typ Funktion
5xxx (Input) Read-Only PV- und WR-Messwerte (MPPT, AC, Temperaturen)
13xxx (Input) Read-Only Batterie-Status, Energiebilanzen, Systemstatus
13xxx (Holding) Read-Write EMS-Steuerung (Modus, SOC-Grenzen, Zwangsladen)

WICHTIG: Dieselbe Adresse 13xxx existiert als Input Register (Funktion 04) UND Holding Register (Funktion 03). Sie liefern unterschiedliche Daten!

PV / DC (Input Register 5xxx)

Register Name Typ Einheit Faktor
5003 Tages-Erzeugung AC uint16 kWh 0.1
5004-5005 Gesamt-Erzeugung AC uint32 kWh 0.1
5008 WR Innentemperatur int16 C 0.1
5011 MPPT 1 Spannung uint16 V 0.1
5012 MPPT 1 Strom uint16 A 0.1
5013 MPPT 2 Spannung uint16 V 0.1
5014 MPPT 2 Strom uint16 A 0.1
5016-5017 Total DC Power uint32 W 1
5019 Phase A Spannung uint16 V 0.1
5020 Phase B Spannung uint16 V 0.1
5021 Phase C Spannung uint16 V 0.1
5031-5032 Total Active Power uint32 W 1
5036 Netzfrequenz uint16 Hz 0.1

Batterie-Messwerte — zwei Quellen!

Quelle 1: Input Register 13xxx (EMS-Controller)

Register Name Typ Einheit Faktor
13019 Batterie Spannung uint16 V 0.1
13020 Batterie Strom uint16 A 0.1
13021 Batterie Leistung int16 W 1
13022 Batterie SOC (EMS) uint16 % 0.1
13023 Batterie SOH uint16 % 0.1
13024 Batterie Temperatur int16 C 0.1

Achtung: Register 13022 liefert den vom EMS angepassten SOC. Bei Kommunikationsstörungen zwischen EMS und BMS kann dieser Wert falsch sein!

Quelle 2: Input Register 5xxx (BMS direkt)

Register Name Typ Einheit Faktor
5083 Batterie Spannung uint16 V 0.1
5084 Batterie Strom int16 A 0.1
5085 Batterie Leistung int32 W 1
5086 Batterie SOC (nominell) uint16 % 0.1
5087 Batterie SOC (BMS) uint16 % 0.1
5088 Batterie Temperatur int16 C 0.1

Register 5087 ist zuverlässiger als 13022 — es liefert den SOC direkt vom BMS, nicht den vom EMS modifizierten Wert.

Vorfall 02.04.2026: SOC-Diskrepanz

Register Wert Quelle
13022 (EMS) 0.7% Falsch — EMS hat BMS-Kommunikation verloren
5087 (BMS) 25.3% Korrekt — Batterie lädt normal
iSolarCloud 0% Liest EMS-Wert → auch falsch

Fix: Sungrow-Exporter auf Register 5087 umgestellt (02.04.2026).

EMS-Steuerung (Holding Register 13xxx)

Register Name Typ Werte
13000 System State uint16 0=Standby
13001 Running State uint16 Bitmask (9=PV+Import, 11=PV+Laden, 12=Entladen+Last, 28=Entladen+Einspeisung)
13049 EMS Modus uint16 0=Eigenverbrauch, 2=Zwangsmodus, 3=Ext. EMS, 4=VPP
13050 Lade/Entlade-Befehl uint16 0xAA(170)=Laden, 0xBB(187)=Entladen, 0xCC(204)=STOPP
13051 Lade/Entlade-Leistung uint16 W (0-100% der BDC-Nennleistung)
13057 Batterie Kapazität uint16 Ah (Wert 1000 = korrekt)
13058 Min SOC uint16 x0.1% (Wert 100 = 10%)
13059 Max SOC uint16 x0.1% (MUSS 1000 = 100% sein!)
13099 Backup Reserve SOC uint16 %

WICHTIG: Register 13057 und 13058 sind per Modbus NICHT schreibbar (Exception 4). Änderungen nur über iSolarCloud!

WICHTIG: Max SOC (13059) NICHT unter 100% setzen — verhindert Zellenbalancing!

SOC-Kalibrierung per Modbus

Bei SOC-Diskrepanzen kann ein Kalibrierungszyklus durchgeführt werden:

  1. write_register(13049, 2) — Zwangsmodus aktivieren
  2. write_register(13050, 170) — Zwangsladen (0xAA)
  3. write_register(13051, 5000) — 5000W Ladeleistung
  4. Warten bis SOC = 100%
  5. write_register(13050, 187) — Zwangsentladen (0xBB)
  6. Warten bis SOC ≈ 10%
  7. write_register(13049, 0) — zurück auf Eigenverbrauch

Emergency Charging

Bei SOC <= 5% löst das BMS automatisch Notladung aus bis SOC 10%. Signal wird automatisch gelöscht.

Automatisches Balancing (SBR, Firmware V24+)

  • Korrigiert 1% SOC-Differenz/Tag zwischen Modulen
  • Maximal 25 Tage aktiv
  • Aktivierung: Auf 100% laden, dann auf <= 15% entladen, 1h halten
  • Temperatur muss dauerhaft 10-35°C sein

Bekannte Probleme

Fehler 714: BMS-Kommunikation

  • Holding-Register 13xxx liefern 65535 (0xFFFF)
  • Input-Register 13xxx liefern teilweise noch gültige Werte
  • Input-Register 5xxx liefern BMS-Daten direkt
  • Fix: WR-Reset oder SOC-Kalibrierungszyklus

Firmware-Änderung Register 13021

  • Ab Firmware ~95.03: Datentyp wechselte von uint16 auf int16
  • Positiv = Laden, Negativ = Entladen

WiNet-S Dual-IP

  • WLAN (.75) und LAN (.28) gleichzeitig im selben Subnetz
  • Kann ARP-Konflikte verursachen
  • Langfristig auf EINE Verbindung reduzieren (LAN bevorzugt)

Quellen

  • Offizielles Modbus-Protokoll: /home/ak/sungrow-docs/modbus/Modbus_Protocol_Residential_Hybrid_v1.1.2.pdf
  • GitHub: mkaiser/Sungrow-SHx-Inverter-Modbus-Home-Assistant (641 Stars)
  • GitHub: MickMake/GoSungrow (981 API-Endpoints dokumentiert)
  • Sungrow Academy: academy.sungrow-emea.com
  • iSolarCloud API: developer-api.isolarcloud.com (NDA erforderlich für AppKey)