himself den PV Zähler sieht man da schonmal also kommt da schon was an 10111001101110101 -> 95093.
Ankündigung
Einklappen
Keine Ankündigung bisher.
OpenKNX-Modbus RTU Gateway
Einklappen
X
-
Das bei CH2 kein Error kommt, das ist schon mal was. D.h. das Gateway hat was an den ABB gesendet und dieser hat darauf "richtig" geantwortet. Warum die Daten aber nicht passen, weiß ich auch nicht.
Man müsste jetzt mal schauen, was genau das Gateway sendet, aber das geht nur mit messen, oder einer Spezial-Firmware
Kommentar
-
Ich hab was gefunden: Viel kann ich damit nicht anfangen. Was man sieht ist dass bei einer Länge von 8 alles ok ist und bei 9 nicht. ggf ist das das thema?
modbus3.jpg
Aus irgendeinem Grund sind die FAILs verwschwunden. Werte geben immer noch keinen Sinn. Ich hab das auch als Dump Datei. Kann man mit wireshark analysieren, wenn ich sage man meine ich irgendjemand anderen als mich, ich verstehe da nichts :-)
modbus4.jpgZuletzt geändert von himself; 05.01.2024, 19:18.
Kommentar
-
Wie hast du diese Werte den aufgezeichnet, wer Sendet hier und wer Antwortet?
Habe es mal schnell überflogen und hier sollte das Gateway die richtigen Werte zumindest mal geschickt haben, oder woher kommt diese Botschaft?
image.png
Slave = 0x07
CMD = 0x03
Adresse = 0x5000 (active import kWh)
Anzahl Bytes = 0x0002
CRC = 0xD56D
Antwort:
Slave = 0x07
CMD = 0x03
Anzahl Antwortbytes = 0x04
Data = 4x 0x00
CRC = 0x9C33
Soweit ja mal alles richtig.Zuletzt geändert von Masifi; 06.01.2024, 09:17.
Kommentar
-
Ich habe jetzt mal bei IO Broker zugehört. Hier sieht das Paket folgendermassen aus:
modbus_io.jpg
Wenn ich deineer Erklärung folge bedeutet das gegenübergestellt:
Slave = 0x07 identisch bei Gateway und IObroker
CMD = 0x03 identisch bei Gateway und IObroker
Adresse = 0x5000 (active import kWh) identisch bei Gateway und IO
Anzahl Bytes = 0x0002 vs 0x0004 abweichend bei Gateway und IObroker. Anzahl Bytes soll 4 sein nicht 2 wie beim Gateway
CRC = 0xD56D
Habe ich das richtig verstanden? Und wenn ja wie kann ich das Gateway dazu bringen auch die 04 zu verlangen?
Hier mal eine Kombi ohne Error, also wo der Wert von IOBroker übernommen wurde:
modbus_IO_okpackage.jpg
Nach der Erklärung von Masifi weiter oben:
request vom Master:
Slave = 0x07
CMD = 0x03
Adresse = 0x5000 (active import kWh)
Anzahl Bytes = 0x0004
CRC = 0x556F
Antwort vom Zähler:
Slave = 0x07
CMD = 0x03
Anzahl Antwortbytes = 0x08
Data = 0x0000000000001225
CRC = 0x4624
Antwort entspricht in Dezimal 4645, was korrekt ist.Zuletzt geändert von himself; 06.01.2024, 12:38.
Kommentar
-
Ich sehe jetzt das Problem und ich muss sagen, dass das meine Firmware im Moment nicht kann.
Der ABB gibt an, das seine Register 16Bit groß sind und die Werte eine Size von 4 haben. D.h. 4x 16Bit = 64Bit. Ein Double word ist aber nur 2x 16Bit = 32Bit.
Daher sendet mein Gateway auch nur einen Wert von 0x02 statt den 0x04 wie der IOBroker.
Wie gesagt, 64Bit Register sind in der Aktuellen Firmware nicht umgesetzt. Da ich gerade mit der Haussanierung und Umzug alle Hände voll zu tun habe, werde ich auch keine Zeit finden, das zu erweitern.
Da sich OpenKNX gerade sehr stark wandelt und es in Zukunft neue coole Features geben wird, wird auch diese Firmware daraufhin angepasst. Dann könnte es möglich sein, den Datentyp 64Bit mit aufzunehmen.
soweit mal sorrydu bis nach über einen Jahr der Erste, der das benötigt.
image.png
Kommentar
-
Hi Masifi,
kein Problem. Nachdem ich aktuell den IO Broker eh am laufen habe kann ich die Werte so auf den Bus bringen. Wenn das irgendwann funktioniert bin ich zufrieden. Soll ich da irgendwo einen request stellen oder hast du das eh auf dem Schirm.
Mit der Erklärung kann ich jetzt zumindestens die "2" Stelligen Werte auslesen wie Spannung oÄ.
So oder so vielen Dank für die Unterstützung!
Kommentar
-
Hi,
ich wollte anfragen ob jemand einen Deye Wechselrichter (SUN 15K-SG01 HP3-EU-AM2) schon bereits per Modbus angeschlossen hat?
Leider sind durch das Deye Handbuch nicht alle Parameter einzusehen um das OpenKNX-Modbus RTU Gateway
vollständig korrekt einzustellen.
Gewisse Einstellungen können vom "Waveshare RS485 to RJ45 Ethernet Converter Module", welche öfter in der Community eingesetzt wird entnommen werden, siehe Bild.
Jedoch sind folgende Einstellpunkte im OpenKNX Modbus Gateway für mich offen:
1.) Parity: denke das wird mit "None (1 stop bit)" eingestellt?
2.) Zeit zwischen zwei Modbus Register Abfrage: "Minimum" oder sollte hier lieber zu aller erst die maximal mögliche Zeit eingestellt werden und dann langsam runter?
3.) Zeit zwischen zwei Abfragezyklen: Gilt hier das selbe wie in Punkt 2.)?
4.) Was wird für Register Position eingestellt: "MSB first" oder "LSB first" ?
5.) Register Start: Wird "Erste Adresse '0' " oder "Erste Adresse '1' " angewählt?
Modbus Einstellungen.jpg
Leider leuchtet die "Err LED" am Gateway durchgehen rot, was wiederum laut Doku auf mindestens eine Modbus-Abfrage fehlgeschlagen hindeutet.
Ebenso kommt keine Antwort in der ETS6 wenn das KO7 (Diagnoseobjekt) oder KO20 (Fehler Modbus Kommunikation) ausgelesen wird.
Die Pin-Belegung findet man auf den letzten zwei Seiten im Benutzerhandbuch. Verwendet worden sind die Pins 1 (B), 2 (A) und 3 (GND).
Handbuch unter folgenden Link einzusehen:
https://www.fuchsberg-electric.de/fi...HP3-EU-AM2.pdf
Der Wechselrichter wurde als "Slave 01" eingestellt. Im Modbus Gateway wurde die ID 1 bei "Slave 1" eingetragen.
Ps.: Können auch irgendwelche Spanungen gemessen werde, da es beim Deye WR zwei Anschlüsse gibt an dem man AB und B (Modbus) abgreifen kann und eventuell der falsche Port verwendet wird. Da man im Internet auch liest das eventuell die RS485 Schnittstelle (derzeitig genutzt) nicht unbedingt funktioniert und man die BMS Schnittstelle verwenden müsste.
Zuletzt geändert von Lexxs; 10.01.2024, 17:45.
Kommentar
-
Hi Lexxs,
zunächst mal nein ich habe diesen Wechselrichter nicht. Was ich nicht verstehe ist warum du per RTU abfragen möchtest wenn du eine IP Gateway hast.
zu den Punkten meine Meinung (Bin aber kein Experte):
1.) Musst du sowohl am Master als auch am Slave setzen. Wie ist egal, muss aber gleich sein
2.) Minimum normalerweise unproblematisch, um sicher zu gehen kannst du das erstmal nach oben setzen. Bzw. fange mit einem einzelnen Register an, dann spielt es keine Rolle
3.) Hier ist der Abstand zwischen den Zyklen gemeint. Das Gateway kann innerhalb eines Zyklus mehrere Slaves Abfragen.
4.) Normalerweise MSB Sollte keine Antwort kommen Versuche LSB
5.) Beides ist bei Modbus gebräcuhlich. Wenn ich mir die Datei im Anhang anschaue vermute ich Start bei 1. Definitiv gelesen habe ich es aber nicht.
Die ERR leuchtet sobald du eine Abfrage programmiert hast die nicht funktioniert. Sei es falsche Registeradresse oder Slave Addresse
Kommentar
-
lexx du könntest auch mal im PV Forum https://www.photovoltaikforum.com suchen, die können normal bei Wechselrichter fragen sehr kompetent weiterhelfen.
Kommentar
-
Die Aussagen von himself würde ich so auch unterschreiben. Als Tipp, wenn so etwas startet, dann am Besten nur mit einer Registerabfrage, da man dann die ERR-LED gut nutzen kann, um zu sehen, was passiert. Die LED geht an, wenn bei einer Registerabfrage, der Slave nicht so antwortet wie erwartet und das kann viele Gründe haben.
Zitat von Lexxs Beitrag anzeigenEbenso kommt keine Antwort in der ETS6 wenn das KO7 (Diagnoseobjekt) oder KO20 (Fehler Modbus Kommunikation) ausgelesen wird.
Messen wird man hier nicht so einfach können. Meine Terminierung im Gateway spannt den Bus, also die Pfade A und B schon vor und die für den Slave ist es ein Eingang, daher wird man hier nicht viel sehen. Ich weiß nicht wie der WR es macht, aber muss seinen Busabschluss terminieren. Wenn er das selber nicht kann, dann muss du das an den Klemmen mit einen Widerstand übernehmen. Wenn der Abstand zwischen Gateway und WR kurz ist, geht es in der Regel auch mal ohne.
Aber das wird der erste wichtige Punkt sein, die HW-Schnittstelle zwischen WR und Gateway muss natürlich funktionieren. D.h. die Anschlüsse am WR müssen natürlich stimmen.
Kommentar
Kommentar