Benachrichtigungen
Alles löschen

Modbus TCP (SunSpec) Fehler beim auslesen mehrerer Werte


Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Hallo zusammen,

habe gestern versucht, meinen Solaredge SE5000 Wechselrichter über das Modbus Protokoll in die Visu einzubinden. Das klappt auch sehr gut - wenn man nur einen Wert abfragt. Ich habe in meinem Fall die Summe aller Energy-Meter an Adresse 40206 abgefragt. Deckt sich auch genau mit dem, was zeitversetzt im Monitoring Portal von Solaredge angezeigt wird.

Jetzt wollte ich noch zusätzlich die aktuelle AC-Leistung der PV abfragen, Adresse 40083 und habe einen entsprechenden Datenpunkt angelegt. Genau ab da geht dann das Problem auch los. Die nun ausgelesenen Werte sind Datenmüll. der gerade noch positive PV-Überschuss wird auf einmal negativ und ich bekomme Leistungswerte geliefert, die etwa Faktor 10 haben. Wollte ein Bild vom Modbus Eventlog hochladen, geht aber irgendwie nicht 🙁

Hatte jemand bereits ein ähnliches Problem und kennt eine Lösung?

Danke und viele Grüße

Max


   
Zitat
Mitglied Admin
Beigetreten: Vor 12 Jahren
Beiträge: 91
 

Hallo Max,

unter den Einstellungen gibt es den Modus Reader. Hier mal die Adresse eintragen, anschließend wird die Adresse mit allen möglichen Modus Datentypen abgefragt und die Werte dargestellt. Ich vermute einfach das der falsche Modus Typ hinterlegt ist. Sollte in der Wechselrichter Dokumentation beschrieben sein.

 

Gruß Xsolution


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Guten Morgen,

laut Beschreibung sollte es so sein:
      Adresse         Size       Type      Unit
base0      base1
40083   40084     1          int16      Watt

Aktuell liegen 1050W an. Lese ich nun im Modbus Reader die Adresse 40083 aus, erhalte ich aber das passende Ergebnis in der Zeile 2byte int signed (10500). Das passt auch so, weil ein Scalefaktor verwendet wird.

Nur wenn ich nun einen entsprechenden Datenpunkt anlege (habe nun also 2 verschiedene Datenpunkte, die ich über den Modbus lesen möchte - Nr. 1 ist ja 40206) bekomme ich nun nur noch Datenmüll bei dem vorher korrekt gelesenen Wert. Wo gerade noch der PV Überschuss mit etwa 790W korrekt dargestellt war steht direkt nach dem hinzufügen des Datenpunktes nun 10985 und die PV Erzeugung wird korrekt dargestellt. Meiner Meinung nach zeigen nun beide Datenpunkte so in etwa die aktuelle PV Leistung an.

Irgendetwas passt da beim auslesen nicht. Hat man stattdessen nur einen Datenpunkt, der abgefragt wird, passt alles wieder

 


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

kleiner Nachtrag. Sind 2 Datenpunkte eingetragen, kann man auch im Modbus Reader nichts mehr auslesen. Dann kommt einfach kein Ergebnis mehr.


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

So hab noch etwas herausgefunden.

Während der Wert der Adresse 40083 stets richtig angezeigt wird, liegt das Problem -  egal in welcher Reihenfolge die Datenpunkte angelegt werden -  stets an der Addresse 40206. Ein Blick in die Schnittstellenevents zeigt, dass ab dem Zeitpunkt des Anlegen eines weiteren Datenpunkts der empfangene Wert bei jeder Abfrage um 1 inkrementiert wird. Keine Ahnung warum das so ist.

Ich habe einen Datenpunkt nah an Adresse der 40083er Adresse anglegt - nämlich 40085 - Frequenz.

Ergebnis der bisherigen Tests:

40083 und 40085 werden richtig angezeigt.

40083 wird alleine richtig angezeigt (also nur ein Datenpunkt angelegt), aber Modbus Reader funktioniert nicht (kann 40085 und 40206 nicht lesen)

40206 wird alleine richtig angezeigt (also nur ein Datenpunkt angelegt), Modbus Reader funktioniert (kann 40083 und 40085 lesen)

40206 und 40211 werden zusammen aber auch korrekt angezeigt.

Liegt es evtl. daran, dass mit den 42er Adressen der Verbrauchs-Meter und mit den 400er Adressen der Wechselrichter gelesen wird? Bin mit meinem Latein am Ende 🙁

 

Danke schon mal und VG Max

 


   
AntwortZitat
Mitglied Admin
Beigetreten: Vor 12 Jahren
Beiträge: 91
 

Hallo Max,

Seite 15:

https://www.solaredge.com/sites/default/files/sunspec-implementation-technical-note.pdf

 

Hast du mal die Base1 Adressen probiert?

 

Gruß Xsolution


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Hallo,

ich hab mittlerweile alles Mögliche ausprobiert. Adresse 40083, 40084, 83, 84 und das für alle gewünschten Adressen. 40083 und 83 funktionieren, die anderen beiden nicht. Gilt auch für alle anderen. Und wie gesagt, jede Adresse für sich alleine funktioniert ja prima. Nur die Kombination nicht.

Diese r Beitrag wurde geändert Vor 5 Monaten von atlantic

   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Habe gerade dazu in einem anderen Forum etwas dzu gefunden:

Die Kombination SE9K und Modbus Meter liefert Daten. Die Daten des Modbus Meters sind ab Register 40122 auslesbar.
Der Wechselrichter ist leider ziemlich pingelig und lässt nur eine TCP Session gleichzeitig zu. Leider ist es auch nicht möglich die Daten des Wechselrichters und des Modbus Meters in einem Rutsch auszulesen, sondern man kann nur zuerst 40000-40121 (WR) und danach dann 40122+ (Modbus Meter) auslesen.

Hatte nun versucht, einfach eine 2. Modbus Schnittstelle mit der gleichen IP anzulegen. Aber Pustekuchen. Eine meldet einen Fehler 🙁

@xsolution: Gibt es dazu eine Abhilfe?

 

Danke und VG Max

 


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Ich krame mal das Thema aus, weil es immer noch aktuell ist 🙂

@Rainer: Gibt es denn eine einfach umzusetzende Möglichkeit, den Modbus in mehreren Stufen auszulesen? Mein WR hat verschiedene Register für die einzelnen Datentypen/Befehle und er lässt es nicht zu, verschiedene Register mit nur einer Abfrage zu lesen/schreiben. Dann kommt nur noch Datenmüll raus. Problem ist eben, dass die Produktionsdaten und die Leistungsregelung in verschiedenen Registern sind. Gerne kann ich auch die Dokumentationen bereitstellen, wenn das weiterhilft.

Um es gleich vorweg zu nehmen. Über die Solaredge Schnittstelle kann ich zwar Leistungsdaten auslesen, allerdings sind die mit dem Umweg über das SE Portal und da sind die max. Abfragen begrenzt.

 

Danke schon mal und VG

 

Max


   
AntwortZitat
Mitglied Admin
Beigetreten: Vor 12 Jahren
Beiträge: 91
 

Hallo Max,

wichtig ist der Modus Daten Typ in der Datenpunkt Konfiguration.

Wenn du bei einer uint16 einen 4 Byte Datenpunkttyp verwendest, dann wird automatisch die nächste Adresse mit ausgelesen. Da du 4 Byte ab der Startadresse ausliest.

Wird somit nicht funktionieren.

Also immer darauf achten.

 

Über den "Modbus Reader" unter "Einstellungen" kannst du die Register testen.

 

Auch mehrere Werte können ausgelesen werden. Es gibt nur Datenmüll wenn der Modbus Datentytyp die falsche Byte Größe hat.

 

Gruß Xsolution 

 

 


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Hi Rainer,

danke für die schnelle Antwort. Habe mich wohl falsch ausgedrückt. Register kann ich mehrere lesen, aber Blöcke sind wohl das Problem. Datentypen sind alle korrekt eingestellt.

Wenn ich versuche aus dem Block 40000-40199 zu lesen, klappt das für alle darin enthaltenen Daten ohne Probleme. Gleiches gilt, wenn ich aus dem Block 40200-40xxx lese.

 

Die Kombination geht aber nicht. Und noch doofer wird es, wenn ich aus dem Block 40000-40199 lese, aber in den Block 57345 schreiben möchte. Das klappt in diesem einen Rutsch eben nicht. Dort müsste das nacheinander passieren.

 

Ich hoffe, Du verstehst was ich meine 🙂

 

LG Max


   
AntwortZitat
Eminent Member
Beigetreten: Vor 4 Jahren
Beiträge: 33
Themenstarter  

Hallo Rainer,

evtl. kannst du mir bei meinem Problem weiterhelfen? Meiner Meinung nach müsste man nur die Schnittstelle etwas anpassen, damit man mehrere Bereiche eintragen kann, die nacheinander abgefragt werden (evtl. mit einstellbarer Verzögerung in ms?)

 

Danke schon mal und LG

 

Max


   
AntwortZitat
Teilen:
WordPress Cookie Hinweis von Real Cookie Banner