Solarmax Wechselrichter der SP Serie (z.B. 5000SP) per Modbus auslesen

Begonnen von HarryCopter, 10 August 2021, 06:40:52

Vorheriges Thema - Nächstes Thema

HarryCopter

Das funktioniert mit folgendem code:


define WR1 ModbusAttr 5 600 <Adresse>:502 TCP
attr WR1 dev-h-defPoll 1
attr WR1 enableControlSet 1


Zusätzlich braucht man Objekte, die über Modbus interessante Register auslesen, formatieren und als reading bereitstellen. Das sind z.B.:

attr WR1 obj-h4101-expr $val / 100
attr WR1 obj-h4101-len 1
attr WR1 obj-h4101-reading Frequenz
attr WR1 obj-h4124-expr $val
attr WR1 obj-h4124-format %d °C
attr WR1 obj-h4124-len 1
attr WR1 obj-h4124-reading Temperatur
attr WR1 obj-h4129-expr $val
attr WR1 obj-h4129-format %.2f kWh
attr WR1 obj-h4129-len 2
attr WR1 obj-h4129-reading EnergieTotal
attr WR1 obj-h4129-unpack L>
attr WR1 obj-h4131-expr $val
attr WR1 obj-h4131-len 2
attr WR1 obj-h4131-reading StundenTotal
attr WR1 obj-h4131-unpack L>
attr WR1 obj-h4151-expr $val / 10
attr WR1 obj-h4151-len 2
attr WR1 obj-h4151-reading Wirkleistung
attr WR1 obj-h4151-unpack L>
attr WR1 obj-h4153-expr $val / 10
attr WR1 obj-h4153-len 2
attr WR1 obj-h4153-reading Blindleistung
attr WR1 obj-h4153-unpack L>
attr WR1 obj-h4155-expr $val /10000
attr WR1 obj-h4155-len 2
attr WR1 obj-h4155-reading MaxLeistung
attr WR1 obj-h4155-unpack L>
attr WR1 obj-h4157-expr $val / 1000
attr WR1 obj-h4157-len 1
attr WR1 obj-h4157-reading Leistungsfaktor
attr WR1 obj-h6672-expr $val
attr WR1 obj-h6672-len 8
attr WR1 obj-h6672-reading SW-Version
attr WR1 obj-h6672-unpack (a*)
attr WR1 obj-h6724-expr $val / 10
attr WR1 obj-h6724-len 1
attr WR1 obj-h6724-reading SpannungL1

Diese Attribute müssen vorher jeweils mit userattrib erzeugt werden:

attr WR1 userattr obj-h4129-expr obj-h4129-len obj-h4129-reading obj-h4129-unpack obj-h4129-format


Das ganze läuft  bei mir erst seit ein paar Tagen. Fehler und Anregungen bitte an mich!

Gruss,
Harald

HarryCopter

Welche Register nun interessant sind und wie sie decodiert werden müssen ist nicht ganz einfach. Die Registerbelegung wird vom Hersteller nicht bekanntgegeben und müsste erst herausgefunden werden.

Dafür wäre ich für Unterstützung dankbar!

Wie macht man das? Den Verkehr auf Port 502 zwischen dem Wechselrichter und einer Anwendung (z.B. der Solarmax App MaxLink) mitschneiden (z.B. mit Wireshark), die enthaltenen Modbus Nachrichten analysieren und raten, welche Register zu welchen Werten der Anwendung passen.


kabanett

Hallo Harald,
nochmals vielen Dank fürs anschreiben per PM!
Ich weiß nicht genau ob ich hier eine große Hilfe sein werde, aber ich gebe mein bestes! ;)

Seitens Solarmax wird es keine Hilfe geben, zumindest habe ich auf meine Problemanfragen bisher keine Antwort bekommen.  :(

Wie hast du die Register gefunden? Per Scan?
Ich hänge mal ein List meines ersten Versuchs (scans) mit den entsprechenden Readings/Attribute an!
Es sind schon recht viele. Alle einzeln Probieren wird eine Weile dauern ;)

Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

ManfredR

Hallo zusammen,
seid ihr in der Sache weiter gekommen?
Viele Grüsse,
Manfred

HarryCopter

Mit den ca. 10 angegebenen Messwerten war ich bisher zufrieden und es läuft zuverlässig. Daher hab ich keine weiteren Nachforschungen angestellt.

ManfredR

Hallo,
kein Problem. Ich selbst habe auch einen 5000SP im Einsatz, allerdings sind die Register zum Teil etwas "verschoben". Hier mal die Register, wie sie bei mir sind:

4097   UL1
4098   IL1

4099 + 4100   HB & LB PAC

4101   Frequenz

4112   UDC (String 1)
4113   IDC (String 1)
4114 + 4115   HB & LB PDC (String 1)

4116   UDC (String 2)
4117   IDC (String 2)
4118 + 4119   HB & LB PDC (String 2)
4124   Temperatur
4125   Status
4127   Temperatur ? eher nicht
4129   KT0 HB Gesamtertrag
4130   KT0 LB Gesamtertrag
4131   Stunden total HB
4132   Stunden total LB

4136   KDY    Tagesertrag   
4150   Error Code
4151 + 4152    Wirkleistung
4153 + 4154   Blindleistung
4155 + 4156   MaxLeistung
4157    Leistungsfaktor

Noch eine Frage - kommt Ihr auf den Port 80 des Wechselrichters drauf? Das hat bei mir schon mal funktioniert, allerdings kann ich mich nicht mehr daran erinnern, wie der Benutzername und das Passwort lauten - "admin" / "admin" funktionieren bei mir jedenfalls nicht....

Viele Grüsse,
Manfred

HarryCopter

Ja, "admin" / "admin" sind die Zugangsdaten. Da wirst du sie wohl mal geändert haben ...

Laut Auskunft der Hotline kannst du das zurücksetzen. Du musst dir nur deren sündhaft teures RS485-Modul kaufen. Da ist dann auch ein Reset-Taster drauf.

Oder du verbindest kurz die richtigen zwei Kontakte an der D-SUB Buchse  ;)

ManfredR

Interessant. Ich habe die RS485 Schnittstelle für die SP-Serie vor mir liegen, allerdings fehlt da der Taster und auch die Anschlussleiste hat nur vier Anschlüsse. Auf dem Bild im Solarmax-Shop sieht die Karte fast gleich aus, allerdings ist da tatsächlich ein Taster drauf und die Anschlussleiste hat zehn Anschlüsse. Welche zwei PINs müsste ich denn schliessen, um da ein Reset durchzuführen? Hatte auch schon ein "Werksreset" aus MaxLink ausgeführt, komme aber nach wie vor nicht auf die Seite.
In den Modbus-Registern 12351 - 12353 bzw. 12368-12370  sehe ich aber, dass admin/admin da hinterlegt ist.

Zur Sicherheit - ich meine hier den Login über http://<<ip-adresse Wechselrichter>>, nicht den Admin-Login über MaxLink.

HarryCopter

Ich hatte vor ein paar Monaten mal die Schnittstelle genauer angeschaut und einen UART TTL zu RS485 Adapter (für 3€ ) an die Schnittstelle gehängt. Hat auf Anhieb tadellos funktioniert.
Ohne Gewähr die Belegung, Benutzung auf eigene Gefahr:
Pin 5 und 7 sind GND (0 Ohm Widerstand zur Erdungsschraube)
Pin 3 ist reset.

Über RS485 läuft am 5000SP ja das MaxComm Protokoll. Diese Kommunikation ist im FHEM Modul 'SOLARMAX' implementiert, d.h. wäre eine Alternative zu Modbus.


ManfredR

Nun wird es spannend. Ich habe vor Jahren einen Datenlogger für Solarmax basierend auf dem MaxCom Protokoll programmert (und später auch diverse andere Hersteller angebund). Der Logger hat mit sämtlichen und zahlreichen E, C, S, MT und Zentralwechselrichtern etc. von Solarmax funktioniert, läuft aber nun nicht zusammen mit dem SP über die RS485 - Schnittstelle. Ich bin mir also ziemlich sicher, dass ich das richtig implementiert habe. Ich habe mir aus dem Grund die Schnittstelle gekauft, bekomme aber keine Antwort vom Wechselrichter auf entsprechende Anfragen. Derzeit versuche ich vom Solarmax-Support nähere Informationen zu erhalten, die sind sich da aber nicht einig. In der Doku zu MaxCom wird der SP5000 aufgeführt, laut Support funtioniert deren Programm Maxtalk (welches ja MaxCom spricht) aber nicht mehr mit dem SP - Wechselrichter. Du hattest MaxCom erfolgreich mit einem SP-Gerät getestet?

Viele Grüsse,
Manfred

kabanett

Hallo

@HarryCopter
Danke für den Tipp per PM!

So langsam fange ich an dieses ModBus Modul zu verstehen ;)
Hier mal ein kleiner Beitrag:

attr WR1 obj-h6912-expr $val
attr WR1 obj-h6912-len 5
attr WR1 obj-h6912-reading Hersteller
attr WR1 obj-h6912-unpack (a*)


Ich habe das Reading einfach mal Hersteller gennant. Zumindest lässt die Suche das vermuten......
https://www.senergytec.com/product/residential-inverter/se-4-5-6ktl-d1/
Kommt der Euch auch bekannt vor?  8)

Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

HarryCopter

Ja, genau dasselbe habe ich heute auch rausgefunden.

Hast du zufällig einen RS485 Adapter an deinem WR?

kabanett

Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

AlexPA

Hallo Leute,

ich dachte ich bin mit meinen Solarmax WR alleine....

Habe insgesamt 3 Anlagen, zwei andere Anlagen mit einem 7TP2 und 20HT4 ( Kommunikation über TCP via MaxTalk Protokoll klappt einwandfrei) und eine mit einem 20SHT samt MaxWebXPN (eigentlich für für den FRE).

Ich brauche aus der Anlage 3 (mit dem 20 SHT) eigentlich immer nur den Momentanwert der Anlage, der Rest ist mir eigentlich egal. Via MaxTalk Protokoll kann ich weder auf den WR noch den MaxWeb XPN. Beide sind via RS485 Verbunden, wobei der WR selber noch ein WLAN Interface hat. ModBus TCP auf Port 502 haben Sie auch, aber ich bin anscheinend zu doof (oder zu unerfahren) auch nur Herauszufinden welches Register das richtige ist. Bräuchte da etwas Hilfestellung

ManfredR

Falls Du mit "Momentanwert" die aktuelle Leistung meinst - die steht IMHO in den Registern 4151 + 4152 (Wirkleistung).

Grüsse,
Manfred