Huawei Wechselrichter (Modbus Fragen)

Hallo allseits,
an sich läuft alles recht gut. Die Visualierung klappt auch (noch primitivversion zum Testen).

Allerdings scheitere ich beim Versuch mit Zwang aus dem Netz die Batterie zu laden.
Falls wer fragt warum ich das will: Meine pv ist klein 5kwp und ist nicht in der lage immer aufzuladen. Gleichzeitig habe ich einen Awattar Stromtarif der manchmal billig manchmal extrem teuer ist. Da bietet es sich an in billigen Zeiten den akku zu laden.

Statt die Batterie aus dem Netz zu laden, blokiert es die Ladung von der PV

Wenn ich Zwangsladen abschalte ist alles normal

6ce3f35e3dc40181f1e497ff599b08cf15cc14cc_2_690x27

Was mache ich falsch :nauseated_face:

danke Walter
ps das skript:
<?php

// === IDs anpassen (deine!) ===

$ID_AC = 59837; // Laden von AC erlaubt ?

$ID_FORCE = 53034; // Forcible charge/discharge

$ID_POWER = 25684; // ForcedPower2 (W)

$ID_MODE = 44577; // Arbeitsmodus

$ID_MAXCHG = 17399; // max Aufladeleistung (W)

$ID_PERIOD = 54147; // ForcedPeriod (min)

$PAUSE = 1500; // ms

function setx($id, $val, $pause) {

for ($i=0; $i<4; $i++) {

    @RequestAction($id, $val);

    IPS_Sleep($pause);

    if (@GetValue($id) == $val) return true;

    IPS_Sleep($pause);

}

IPS_LogMessage('MODBUS', "SET FAIL id=$id val=$val");

return false;

}

$on = (bool)($_IPS[‚VALUE‘] ?? false);

SetValueBoolean($_IPS[‚VARIABLE‘], $on);

if ($on) {

setx($ID_MODE,   1,     $PAUSE);   // Fixed charge/discharge

setx($ID_AC,     1,     $PAUSE);   // AC-Laden erlauben

setx($ID_PERIOD, 120,   $PAUSE);

setx($ID_MAXCHG, 2000,  $PAUSE);

setx($ID_FORCE,  1,     $PAUSE);   // 1 = Charge

setx($ID_POWER,  2000,  $PAUSE);   // Ladeleistung (W)

} else {

setx($ID_POWER,  0,     $PAUSE);

setx($ID_FORCE,  0,     $PAUSE);

setx($ID_AC,     0,     $PAUSE);   // Netzladen verbieten

setx($ID_MODE,   2,     $PAUSE);   // Eigenverbrauch

}

Moin… ganz unten wo Du den Speicher wieder auf Eigenverbrauch setzt. Ist 2 der richtige Wert?

Bei mir ist es 4.

Die MODBUS ADRESSE lautet 37006.

Gruß,

Peter

Siehe Screenshot.

Danke, das passt bei mir gar nicht.
Interssant wäre warum das bei dir funktioniert.
Deine Angaben akzeptiert er bei mir gar nicht.
Test:
image

Bei 4 wird der akku Zwangsentladen. ich verwende:

Ich habe schon alle Werte hier ausprobiert - keiner führt zur Ladung aus dem Netz

Aber danke erstmal

Welches Huewei-System hast du denn? Deine Adresse ist ja auch ne andere.

Hast Du ein Dokument/Übersicht über deine ModbusAdressen?

Hast Du mal versucht nur den Befehl für den Eigenverbauchs-Modus zu senden?

Ich denke es ist sehr wichtig, das Huawei-System/Modell genau zu eruieren. Und auch die aktuelle Firmware…es gibt da immer wieder Veränderungen

Hi,

Dongle-HV22A0367022
INV-HV22A0559396
SUN2000-5KTL-M1

die richtigen sind schwer zu finden (finde ich) die funktionieren am ehesten:
https://www.debacher.de/wiki/Sun2000_Modbus_Register

lg Walter

Ja, aber zwangsladen geht auch nicht

Such mal auf der Huawei-Website nach deinem Gerät resp. Firmware. Ich habe damals die entspr. Modbus-Adressen von dort. Da gab es entspr. Dokumentationen.

An Sich eine gute idee nur ich komme nicht durch
Suchfunktion dort;

https://info.support.huawei.com/Energy/info/de_DE/solar/document-all-products-12631-all-4-SUN20004%269%2315KTL4%269%231M1

SUN2000-5KTL-M1
findet das benutzerhandbuch keine Register

Dongle-HV22A0367022
INV-HV22A0559396
Software V100R001C00SPC168
batterie LUNA2000-7-E1
firmware V200R023C10SPC110

Alles erfolglos was mach ich falsch? (bin zu deppert?)
lg Walter

Bin gerade noch 2 Wochen im Urlaub, mit lausigem Internet-Zugang… :upside_down_face: Falls niemand vorher einen Tipp hierzu hat, schaue ich danach ob ich etwas sinnvolles finde…

Schönen Urlaub :smiley:

Wir hören uns danach

hallo,
ich werke seit 2 Wochen an dem Problem.
Hast du inzwischen eine Lösung?
bin dabei die Flinte insKorn zu werfen.
danke, Walter

ps
ich will in Zeiten in denen Tou auf entladen steht den WR zwingen trotzdem aus dem Netz zu laden.
Hindernis scheint das Register 37006 zu sein das ich von 1 auf 6 (oder 5) umstellen müsste es ist aber nur RO Read Only.

Oha, danke dass du mich auch nochmals daran erinnerst, eine Rückmeldung zu geben…. Der Urlaub hat mir wohl doch zu gut getan :slight_smile:

Nun ich habe mal nach deinen Geräten gesucht resp. nach deiner genannten Firmware-Version (auf der Support-Seite von Huawei). Schau mal hier
V100R001C00SPC168 ==> https://support.huawei.com/enterprise/en/doc/EDOC1100437486?section=k003

Dort sind auch Modbus-Informationen aufgelistet.
Vielleicht findest du auch noch andere Informationen auf diesen Seiten (ich meine, dass ich meine Modbus-Adressen auch von dort hatte)

Update 1 - sehe gerade, dass auch dort das Register 37006 nur als RO zur Verfügung steht. Was dir offenbar nicht weiterhelfen wird.

Update 2 - wäre nicht ev. auch das Register 47087 ein Ansatz? Nur so ein Gedanke

Update 3 - ich habe hierzu noch interessante Informationen gefunden… ev. kann das auch unterstützen –> Reading data from Huawei inverter SUN 2000 (3KTL-10KTL) via modbus TCP and RTU - #267 by ollo - Tutorials & Examples - openHAB Community

Danke fürs erste,

update 2 47087 macht auch nichts
update 3 schau ich mir erst nächste Woche näher an

lg Walter

Ich habe es mal nachgestellt gemäss dem obigen Link. Und es hat funktioniert, sprich, die Batterie hat sich vom Netz geladen.

Zentral ist die Adresse 47100. Mit dieser stellst du es ein oder aus.

So habe ich es gemacht (ich habe es ohne Script getestet; d.h. direkt die entsprechenden Modbus-Variabeln gesetzt):

… charging from grid might make sense with a smaller plant in winter times while using a dynamic tariff. So at night when the price falls down one can charge the battery from grid and use the electricity at day time.

To force a time based charge one has to do:

  1. enable Luna AC charging (47087 = 1)

  2. set Luna Forcible Charge Power (47247 = 4000[W])

  3. set Luna Power of Charge from Grid (47242 = 4000[W])

  4. set Luna Forced Charging Period (47083 = 60[min])

  5. enable Luna Force Charge (47100 = 1)

Also make sure register 47244 >= 47242.

After the Luna Forced Charging Period time expires, charging stops automatically. Or one can stop by setting Luna Force Charge (47100) = 0.

Hallo,
Danke, du bist Spitze!!!

Das fehlende Register war das 47242 - jetzt händisch dazugefügt, alles brav in deiner Reihenfolge angeordenet und Vola - es läuft!
Im Bild sieht man, dass trotz Zeitfenster “entladen” das zwangsweise Laden aktiviert ist.
Wenn man 47100 wieder auf 0 stellt, entlädt der Akku wieder (normal).

Genau so soll es sein.
ich mach jetzt die Visu schöner, skripte für Zwangsladen Ein/Aus und beobachte das ganze jetzt 3 Tage unter verschiedenen Rahmenbedingungen.
Weiteres Ziel ist die Ladung in Abhängigkeit vom Awattar Strompreis noch intelligent zu steuern. Es sollte dann gar kein Zeitfenster “Laden” notwendig sein, weil IPS das in der eigenen Logik macht.

Ich gebe dann nochmals Rückmeldung

Herzlichen Dank

Das freut mich doch!! :slight_smile:

Schön zu hören, dass es geklappt hat. Ich bin dann auf die überarbeitete Visu gespannt :slight_smile:

Grüsse
Martin

Hi, Hier die bilder von der Visu, noch Entwicklerstadium mit kontrollfeldder Register

  1. Das es überhaupt funktioniert - Den Register 47242
  2. Nur mehr 1 Tou Fenster 00:00-23:59 “Entladen” tou muss aktiv sein
  3. Mühsam zu testen, weil alles langsam abläuft zwischen jedem Register 500ms pause

Funktionen und skripts

  1. Zwangsladen von Hand oder Zeitsteuerung für “forced period” aktivieren
  2. danach wieder “normal” oder vorher normal von Hand aktivieren

Was noch Fehlt:

Steuerung durch Awattar Preise in Abhängigkeit von Soc und erwarteten Sonnenschein - sollen dann in die Zeitsteuerung geschrieben werden.

Die skripte habe ich durch ChatGpt schreiben lassen (mühsam - aber ich könnte das nicht) und sind vermutlich nicht optimal.

Nochmals herzlichen Dank
LG Walter

ps. wenn werdei skripte will gerne

Zwangsladen ein

NOrmalbetrieb:

1 „Gefällt mir“

Hi M70,

der Fehler beim Huawei Wechslerichter kommt immer noch hoch, ich hatte ja schon damals vermutet, dass es bei den „Number of MRP trackes“ liegt.

Könntest du bitte einmal prüfen was du eingetragen hast unter „Funktion lesen“:

Ich habe den Wert jetzt mal umgestellt auf 04

In der Hoffnung, dass dies der Fehler war/ist.

Vielen Dank.

Bei mir steht das gleiche drin, also:

Ich tippe viel mehr auf den Datenblock 1; sprich, dass dort noch etwas nicht stimmt beim Einlesen.

Grüsse Martin