[ModBus Vorlage] SolarEdge WR

Modbusvorlage für alle Sunspec kompatiblen Wechselrichter von Solaredge.

Bitte immer mit den Variablen arbeiten die ein (berechnet) im Namen haben. Das sind die finalen Werte.

Solaredge_Sunspec.json (32,5 KB)

Dokumente von SolarEdge:
sunspec-implementation-technical-note.pdf (1,5 MB)
SolarEdge_SunSpec_Protokoll.pdf (473,0 KB)

3 „Gefällt mir“

och nö, die hatte ich fast fertig :frowning:

Skalierungsfaktor kannst du einfach so berechnen:

return ($VALUES["A_2_3_71"] * (10 ** $VALUES["A_5_3_75"]));

Gruß Stephan

Na dann werfen wir meine weg und du lädst deine hier hoch. Kein Problem. Du bist ja weiter als ich :slight_smile:

Mein 1. Beitrag ist jetzt als Wiki aktiv - du müsstest ihn also auch editieren können.

paresy

ok, hab deine Vorlage um die Umrechnung mit dem Skalierungsfaktor ergänzt.
Profile sind auch fast alle enthalten.

Viele Grüße
Stephan

2 „Gefällt mir“

Vielen Dank euch beiden! Hat super funktioniert. Nun habe entlich die Daten im System. TOP!

1 „Gefällt mir“

Hallo, ich mache das mit dem .json Import das erste mal. Ich denke ich habe es nach der Hilfe importiert, wo muss ich nun die IP Adresse des WR eintragen oder ändere ich das Gateway für das Modul.
Wäre über Hilfe dankbar :slight_smile:

Danke Christian

Im Gateway trägst du die Geräte-ID ein und über dem Gateway steht die Schnittstelle - dort wird die IP-Adresse des WR eingetragen.

LG. Werner

1 „Gefällt mir“

Hallo Christian,

habe gerade meinen Modbus SL (RS 485) zum Laufen bekommen.
War nicht ganz ohne. Hat mich einiges an Nerven gekostet, aber dabei habe ich zumindest die Philosophie der Modbus Projektierung in IPS verstanden, glaube ich zumindest!?

Sehe gerade, dass Werner dir schon geantwortet hat. Egal, ich gebe meinen Senf einfach noch dazu …

Vorab, Modbus TCP habe ich in IPS noch nicht projektiert, aber ich denke nachfolgende Vorgehensweise führt ans Ziel

Schau dir zunächst die Spec „Implementation Technical Note.pdf“ (Beitrag 1 von paresy) an. Du musst den Modbus TCP am WE erst aktivieren. Das „Wie“ wird dort beschrieben.

Zur Projektierung Modbus TCP in IPS (von „unten“ nach „oben“)

Schritt 1 => I/O Instance (Kommunikationskanal)

Erzeuge einen „Client Socket“.
Hier kannst du unter „Host“ die IP des Teilnehmers (WR) eingeben und bei Port „502“ ein. Ist der Modbus TCP Standard Port.

In der erwähnten WR Doku steht zum Port einmal „1502“ und zwei Seiten weiter „502“!? Habe ich nicht verstanden. Probiere „502“

Damit hast du dann die unterste Ebene (Kommunikationsebene) eingerichtet.

Schritt 2 => Splitter Instance (Datenaufbereiter )

Erzeuge hier eine „Modbus Gateway“ Instanz. Bei „Modus“ muss „Modbus TCP“ eingestellt werden (Ist der IPS Default-Wert).

Die Server ID (Eigentlich „Unit Identifier“, in der Spec zum WR „Device ID“ ) ist für Modbus Gateways oder Modbus TCP Server mit verschiedene Serverbereiche relevant. Entspricht bei Gateways der Modbus SL Adresse des Teilnehmers am RS485 Bus. Das nur zu Info.
In der Doku zu dem WR steht „1“. Also hier die „1“

WICHTIG, du musst oben in der Reihe von „Instanzkonfiguration“ auf „Schnittstelle ändern“ gehen und prüfen, ob die unter Schritt 1 erzeugte I/O Instance ausgewählt ist!

Hier kannst du auch über die Experten Einstellung die Abfrage der Daten in Blöcken einstellen, aber das würde ich, wenn überhaupt, später machen! Bei Modbus SL durchaus sinnvoll, bei Modbus TCP eigentlich egal. Ist bei der Ersteinrichtung aber nur eine Fehlerquelle mehr.

Schritt 3 => Geräte Instanz (Mapping auf die Gerätevariablen)

Jetzt müsstest du hier eine „Modbus Geräte“ Instanz anlegen. Ich denke, das hast du schon getan, da hier ja auch die Vorlagen importiert werden.

WICHTIG, hier musst du oben in der Reihe von „Instanzkonfiguration“ auf „Gateway ändern“ gehen und prüfen, ob die unter Schritt 2 erzeugte „Splitter Instanz“ ausgewählt ist.

Bzgl. Abfragezyklus scheiben sie in der WR Doku, dass nach 2 Sek die TCP Verbindung durch den WR geschlossen wird. Macht zwar nix, würde sie aber trotzdem < 2Sek einstellen

Um Modbus Funktion Codes musst du dich nicht mehr kümmern, die sind in der Vorlage enthalten.

Und los geht’s (hoffentlich) => I/O Instanz aus Schritt 1 starten und Werte checken.

Das müsste eigentlich funktionieren!? Habe es, wir erwähnt, noch nicht gemacht, aber so würde ich an die Sache rangehen.

Hoffe es klappt …

VG Teckie

1 „Gefällt mir“

Mega :slight_smile: Vielen Dank so klappt´s!

Wie berechne ich jetzt die aktuelle PV Leistung? Sollte das nicht mit <? SetValue(37247,GetValue(44416)*pow(10,GetValue(40260))); ?> Register 40100 und 40101 funktionieren?

Danke

Nach einem Gespräch mit Michael Maroszek auf der Light&Building 2024 bin ich dabei von USB weg auf Ethernet umzustellen. Ein Deye 12K lässt sich auch per Modbus RTU über TCP und 4-CH RS485 TO POE ETH (B) Adapter auslesen aber mit immer wiederkehrenden Aussetzern.
Nun habe ich bei meinem Solaredge Modbus TCP aktiviert und lese da die Daten auch aus (1,9s Intervall). Gleiches Phänomen da, oft kommen minutenlang keine Daten an.
Da ich die produzierte Leistung vom Solaredge auch noch per IR Lesekopf/USB auslese (5s Intervall), habe ich mal beide Daten graphisch verglichen:


Man kann die Aussetzer bzw. das nicht Aktualisieren der Daten recht gut erkennen.
IPS 7.1 läuft bei mir auf einem Mini PC (ZOTAC ZBOX CI329 nano) mit Linux drauf (nur IPS, also der MiniPC sollte sich eigentlich langweilen).
An der Netzwerkauslastung liegt es nicht, das habe ich geprüft.
Nächster Ansatz wäre nun mit Wireshark zu untersuchen, wo die Daten liegen bleiben. Das ist aber sehr mühsam.
Von daher die Frage ob so ein Verhalten jemandem bekannt ist und ob es Lösungen gibt oder andere gute Vorschläge …?
Danke schon mal vorab!

Also ich lese meinen WR aller 15 Sekunden aus und habe relativ selten mal Aussetzer. Kommt aber schon mal vor.

wenn man nur auf das rote Aufrufezeichen in der Verwaltungskonsole achtet, scheint das zuerst so. Daher hat mich die Grafik doch überrascht und wie häufig das ist. Eine vernüftige PV geführte Autoladung geht so nicht mehr :face_with_head_bandage:

Nach einigen Wireshark Sessions hat sich heraus gestellt, dass der Haupt-Switch überlastet war. Nun hängt der Symcon Rechner am Technik-Switch (war vorher hinter dem Haupt-Switch) und so kollidiert der ganze „Symcon-Traffic“ (goe-Wallbox, Shelly Pro 3em, Shelly Plus H&T, Solaredge WR und Deye WR) nicht mit dem Büro / Tablet Traffic.
Hätte aber trotzdem nicht gedacht, dass so ein Zyxcel Switch so schnell an seine Grenzen kommt.

Ich habe bei einem Kunden einen SE8K hängen, ModBus TCP ist aktiv, jedoch springt die i/o Instanz nach wenigen Sekunden auf Fehler…
Habt ihr eine Idee wo ich nachschauen könnte?

@Wuwu : welchen Zyxel Switch verwendest du?
Wir bringen Zyxel Switche an ihre Limits, aber da hängen dann viele Hunderte Clients dran, mit sehr vielen Regeln!

Hängt noch ein weiteres Gerät am SolarEdge per ModBus dran? Wir hatten das auch bei einem Kunden und es stellte sich heraus, dass der SE nur eine Verbindung gleichzeitig kann.

paresy

Es hängt noch KNX dran, aber ob am WR oder am SmartMeter, das weiß ich leider nicht.
Ich komme nicht drum herum noch einmal vor Ort zu schauen

Aber traurig das man nur 1 Verbindung aufbauen kann, das Problem ist, dass die KNX nicht alle Werte liefert :frowning:

war ein alter GS1200-8HP.
Jetzt mit einem neuen XMG1915-18EP läuft alles prima.
Einziges Problem beim SE17K ist, dass er manchmal die Werte mit falschem Multiplikator sendet. Das ist wohl im Solaredge nicht sauber synchron gehalten.

1 „Gefällt mir“

hab das Problem mit meinem Huawei WR auch - eine Verbindung und selbst wenn die zu oft anfragt, dann geht er in Timeout, weil er nicht mehr hinterher kommt.

Bei mir hat ein Modbus-Proxy Abhilfe geschaffen und seitdem keine Probleme mehr. Bediene aktuell (auch zu Testzwecken) 11 Instanzen mit dem Modbus-Proxy.

1 „Gefällt mir“

Hallo , frage meinen Solaredge WR bisher problemlos alle 5min über TCP ab und möchte nun aktuellere Werte über ModBus abfragen.
Ich verstehe nur noch nicht ganz die Herangehensweise bei der Installation von ModBus - was habe ich bisher unternommen:
a. einen Modbus Gateway erstellt (ModBus: ModBus TCP, Geräte-ID: 1 , Abfrageverzögerung: 10ms)
b. einen ClientSocket erstellt (Host: IP des WR, Port: 1502, Benutze SSL: deaktiviert)
c. ein ModBus-Gerät erstellt und darin die Vorlage importiert, es werden Variablen angelegt welche keine Werte enthalten.

Wie geht es nun weiter?
Ist diese Solaredge-Vorlage generell für alle WR von SolarEdge?

Vielen Dank für Unterstützung!