[Modul] SMA Wechselrichter (ModBus)

Das Problem besteht auch bei den anderen Leistungswerten.
Ich nutze hier ein Skript, das die Modbus Variablen ausließt und nur Werte >= 0 in eine extra Variable schreibt, die dann geloggt wird. Begrenzt wird der Wert mit:

$PVerzeugt_W = ($PVerzeugt_W > 0) ? $PVerzeugt_W : 0;

benötigt zwar die doppelte Anzahl an Variablen, andere Idee habe ich da aber auch noch nicht gefunden.

Gruß
Rainer

Das ist eine interessante Idee.

Vielleicht lässt sich damit auch ein weiteres Phänomen lösen das mich momentan beschäftigt:
Nicht alle Modus Variablen, die ich angelegt habe, werden automatisch alle 5 Sekunden aktualisiert. Ich rätsele derzeit noch, woran das liegen könnte?!?

Möglicherweise klappt es besser, wenn ich ein eigenes Skript benutze, um alle Modbus Variablen auszulesen? Magst Du vielleicht Dein Skript (oder Teile daraus) hier posten?

Besten Dank im Voraus.

So mache ich es notgedrungen auch. Der Wert -2147483648 steht bei SMA für „NaN“ (not a number).

Perfekt wäre, wenn man in der Instanz den Wert ignorieren lassen könnte.

@paresy: siehst du da eine Möglichkeit?

dafür könnte ich mich auch begeistern. Wenn das möglich ist, dann vielleicht auch ein oberes Limit. Ich kann jetzt nicht genau sagen warum, habe bei aber auch noch einen Max-Wert, der nicht überschritten werden soll.

Für @TorstenS vielleicht noch zur Erklärung: Das Skript liest nicht die Werte über ModBus, sondern nur die Variablen der ModBus Devices. aber ich habe im Gateway dann unter Expertenoptionen Datenblöcke angelegt mit den Adressen, die als Block hintereinander liegen. Somit werden z.B. die Leistungswerte alle zur selben Zeit abgefragt.
Ich habe da aber auch schon gesehen, dass wenn sich Werte hier wohl nicht ändern, mal eine Variable auch keine Aktualisierung erhält.

Ah, OK.
Besten Dank für den Tipp, werde ich auch mal probieren.

das fände ich auch gut :+1:

Ich klinke mich auch mal wieder ein - ich habe eine Frage bezüglich dem Wert 30775, ist das nicht eher die Lade-/Entladeleistung der Batterie? Das wäre ja dann nicht die Leistung die vom Dach kommt (z.B. wenn Batterie fast voll ist, dann lädt es bei mir nur noch mit 1kw Weiter, der Rest geht dann ins Netz - weiterhin ist der Verbrauch vom Haus nicht mit drin).

Habt ihr raus bekommen, welche Modbus Adresse für die aktuelle PV Leistung ist und auch wie schon angefragt für den Verbrauch im Haus?

Experimente gerade mlt dem aktuellen IPSViewDesigner rum:

Die Bilder und Schriftfarben basieren auf den Variablen und sind entsprechend Grün oder Rot. Jedoch wie man sieht, fehlen noch die Werte für den Verbrauch im Haus und für das was gerade aus der PV kommt - die Variable für Verbrauch heute errechne ich noch gerade und die Variable ist nur ein Platzhalter.

Hallo @pleibling,

das Modbus Register 30775 lasse ich alle 5 sek. auf meinen beiden Wechselrichtern (Sunny Boy und Sunny TriPower) ermitteln. Wenn ich beide Werte zusammenrechne, dann komme ich exakt auf die Leistung, die zur selben Zeit auch im Sunny Portal als die abgegebene Leistung von den PV-Modulen angezeigt wird. Passt also. :+1:
Das Einzige, was beachtet werden muss, ist die Umrechnung von @erpe (siehe weiter oben), damit abends „0“ anstatt negativer Werte angezeigt werden.

Die Lade-/Entladeleistung der Batterie ermittle ich auf dem Sunny Boy Storage über die Modbus Register 31393 (Ladeleistung) bzw. 31395 (Entladeleistung).

Übrigens, den momentanen Stromverbrauch (das war ja noch eine meiner offenen Fragen) ermittle ich nicht über ein Modbus Register, da steht der nicht drin.
Wie ich mittlerweile herausgefunden haben, kann man den ja ganz einfach selbst errechnen (ich bin manchmal halt ein Depp und sehe den Wald vor lauter Bäumen nicht… :see_no_evil:):

→ momentaner Stromverbrauch = Einspeisung von Dach + Entladeleistung der Batterie + Netzbezug - Netzeinspeisung

@erpe: Vielen Dank noch für den Hinweis mit den Datenblöcken im Expertenmodus. Seitdem ich die dort definiert habe, kommen bei mir alle Daten zuverlässig an. :smiley:

1 „Gefällt mir“

@pleibling
Dein IPSView Experiment sieht übrigens auch prima aus.
Magst Du die fertige View hier vielleicht teilen? Dann müsste ich das Rad für mich nicht komplett neu erfinden… :wink:

Cool. Werde ich mir am Wochenende anschauen. Wenn alles fertig ist, teile ich das. Weißt du wie man das macht?

Kann man das irgendwie einfach exportieren mit allen Bildern?

kann mir kurz jemand helfen
ich möchte die Variable 34300 in die Variable 52325 schreiben aber nur wenn > -20
sonst soll in Variable 52325 -20 stehen
aber irgendwas mach ich noch falsch

?php

//Dokumentation: https://www.symcon.de/service/dokumentation/konzepte/skripte/aktionsskripte/
$WertIn = GetValue(34300); // Wert aus Variable1 auslesen

if GetValue($WertIn) > -20
{$WertOut = $WertIn;}
else
{$WertOut = -20;}
endif

SetValueInteger(52325, $WertOut);

?>

ist die Modbus-Adresse denn überhaupt schreibfähig ? Ansonsten musst du sie umwandeln.

also ich kann mich drehen und wenden wie ich will, ich komme nicht an die Lade-/Entladewerte von meinem Tripower10

			31393 => [
                'name' => 'Battery Load',
                'count' => 1,
                'type' => 'U32',
                'format' => 'FIX0',
                'profile' => 'kW.Fixed',
                'archive' => 1 // archive: counter
            ],
			31395 => [
                'name' => 'Battery UnLoad',
                'count' => 1,
                'type' => 'U32',
                'format' => 'FIX0',
                'profile' => 'kW.Fixed',
                'archive' => 1 // archive: counter

das kann ich überhaupt nicht auslesen :thinking:

so nun noch etwas abgeändert
es motzt aber in linie 6 sei die variable nicht definert (das wäre die line: if (GetValue($WertIn) > -20))

<?php //Dokumentation: https://www.symcon.de/service/dokumentation/konzepte/skripte/aktionsskripte/ $WertIn = GetValue(34300); // Wert aus Variable auslesen if (GetValue($WertIn) > -20) {$WertOut = $WertIn;} else {$WertOut = -20;} SetValueInteger(48759, $WertOut); ?>

kannst du die Skripte mal bitte in Code-Tags setzen, dann kann man sie besser lesen

hi wie mach ich das?
im übrigen ich glaub ich habs nun

<?php

//Dokumentation: https://www.symcon.de/service/dokumentation/konzepte/skripte/aktionsskripte/
$WertIn = GetValueInteger(34300);  // Wert aus Variable auslesen

if ($WertIn > -20)
    {$WertOut = $WertIn;}
else
    {$WertOut = -20;}

SetValueInteger(48759, $WertOut);

?>

das bedeutet aber nicht, das die geschriebene Variable im Wechselrichter ankommt

ich muss heut abend schauen ob der alles unter -20 = -20 funktioniert
Aber das skript meldet keinen fehler mehr

Hallo @Axel37,
Das Ermitteln der Lade-/Entladewerte klappt bei mir auch nur über den Sunny Boy Storage (das ist bei mir der Wechselrichter der am Akku hängt). Über den TriPower oder den Sunny Boy kommen da bei mir auch keine Werte.

Das Modbus Register 30775 gibt mir einwandfrei die aktuellen PV-Panel-Werte sowohl bei meinen Sunny Boy 5.0 als auch bei meinen Sunny TriPower 6.0 aus.

Allerdings:
Über die von @bumaas am 11.02.23 gepostete URL habe ich die für meine Anlage passenden Datenblätter gefunden. Darin war aber auch zu lesen, dass diese Datenblätter nur für bestimmte Geräte und auch nur für bestimmte Firmware-Versionen gelten würden.

Laut heruntergeladenem Datenblatt „parameterlist_de.html“ sollen das Register 30775 auch für einen STP10.0-3SE-40 gelten, allerdings erst ab Firmware Version „3.01.09.R“. Könnte hier vielleicht der Hase im Pfeffer liegen?

Leider nicht ad hoc.
Ich meine mal was gelesen zu haben von einer Export- oder Backup-Möglichkeit bei IPSView. Damit habe ich mich aber noch nicht näher beschäftigt.