Seite 1 von 1

[V4.0 IP2] ModBus-Profil für E3DC S10X

Verfasst: Fr Aug 04, 2023 9:58 pm
von Jürgen
Hallo zusammen,

nach langem Warten habe ich meinen E3DC S10X geliefert bekommen und dieser wurde in Betrieb genommen.
Nun bekommt mein Timberwolf eine weitere Aufgabe, über ModBus TCP die Daten aus dem E3/DC auszulesen.

Ich habe dafür erstmal mit dem Profil von jockele gestartet, die Verbindung hat damit sofort und einfach funktioniert. Da meine Anlage aber größer ist und ich auch die Daten von dem Zusatzwechselrichter auslesen möchte, musste ich hier tiefer einsteigen und dafür ein eigenes Profil erstellen, welches ich später gerne hier teilen möchte.

E3DC hat Ende Juli eine neue Version der ModBus-Schnittstelle herausgebracht, es ist nun die Version 2.20.
Mir liegt leider nur die Dokumentation zu einer älteren Version vor, aber es haben sich einige Änderungen ergeben sowie die Menge der Daten, die Abgerufen werden können wurde nach meinem Vergleich deutlich erweitert.

Das Profil habe ich soweit schon gut fertig gestellt und getestet, aber ich habe ein Problem mit den Datenwerten zu den Registern mit Int32 und Länge 2.
Hier hat sich E3DC etwas ausgedacht, wie Werte mit dem Int32 zu berechenen sind.
Da ich nicht weiß, ob ich die Anleitung als Anhang hier hochladen darf, da ich diese nur aus dem geschützten Kundenportal habe, hier der Entsprechende Ausschnitt dazu:
4.2 Modbus Int32 Register mit Länge 2
• Jedes Register kann mit unterschiedlichen Daten gefüllt werden. Es ist erforderlich, den
entsprechenden Datentyp einzustellen.
• Ein Register kann zu klein sein:
– Dann wird die Länge auf zwei gesetzt.
Aus zwei Registern (uint16) wird also ein Wert (uint32).
– Die Information wird aber in 2 Registern übertragen.
• I. d. R. werden in der Modbus-Software die Register einfach als (uint32) abgefragt. Sollte diese
Umrechnung nicht per Software möglich sein muss die Berechnung manuell erfolgen.
Beispielrechnung:
Netzbezug = 400 Watt
40074(+/-Offset) = 400 (uint16)
40075(+/-Offset) = 0 (uint16)
[Register 40075] < 32768 è Netzbezug
Netzbezug = [Register 40075] * 65536 + [Register 40074]
= 0 * 65536 + 400 = 400
Netzeinspeisung = 0
Netzeinspeisung = 600 Watt
40074(+/-Offset) = 65535 (uint16)
40075(+/-Offset) = 64936 (uint16)
[Register 40075] >= 32768 è Netzeinspeisung
Netzbezug = 0
Netzeinspeisung = 4294967296 - [Register 40075] * 65536 - [Register 40074]
= 4294967296 – 65535 * 65536 – 64936 = 600
Netzleistung (mit positiven oder negativen Werten)
Netzleistung = Netzbezug - Netzeinspeisung
Mit dieser Art, die Werte bei Int32 im ModBus zu dekodieren sind, weiß ich nichts anzufangen.
Wenn ich den wert mit 16 Bit auslese (wie auch im Profil von jockele), stimmt er mit den Wert aus der Web-Schnittstelle überein, aber nur, so lange die Länge in dem Feld ausreicht.
Sobald die Leistung (es betrifft bei mir immer nur die Leistungsangaben) ansteigt, ist der Wert bei 16 Bit nicht vollständig und bei 32 Bit komplett falsch.

Wie kann ich das von E3DC vorgegebene Format uint32 in in den Profileinstellungen des Timberwolf einstellen?
Ich habe bei ModBus keine Möglichkeit dazu gefunden oder habe ich diese nur übersehen?

Oder gibt es eine andere Möglichkeit?
Die letzte Alternative die mir einfallen würde wäre, beide Register einzeln zu importieren und dann im Logik-Editor zu berechnen. Aber dann ist der Vorteil, das Profil für die Community zur Verfügung stellen zu können, deutlich eingeschränkt und es wäre eine lange Anleitung dazu nötig.

Viele Grüße
Jürgen

Re: [V4.0 IP2] ModBus-Profil für E3DC S10X

Verfasst: Fr Aug 04, 2023 10:53 pm
von StefanW
Hi Jürgen,

selbstverständlich kann man UInt32 einstellen?

Eine Bedienungsanleitung von E3DC solltest Du hier hochladen dürfen, weil im Allgemeinen für Bedienungsanleitungen kein Urheberrechtsschuz gilt (nicht schutzwürdig, sofern nicht ganz besonders gestaltet).

lg

Stefan

Re: [V4.0 IP2] ModBus-Profil für E3DC S10X

Verfasst: So Aug 06, 2023 9:09 pm
von Jürgen
Hallo Stefan,

danke für die Aussage zu der Anleitung. Diese werde ich in den nächsten Tagen hochladen, gemeinsam mit dem Profil.

Ja, der Timberwolf kann diesen Wert richtig lesen.
Ich habe noch eine ganze Zeit mit den Dekodierungs-Einstellungen herumexperimentiert. Schließlich hat es mit einer Kombination aus Reihenfolge und Format funktioniert, sofern es meine bisherigen Tests ergeben haben.
ich schreibe nun die Werte noch einige Zeit in eine Zeitreihe und wenn dann alles funktioniert, ist das Profil fertig.

Viele Grüße
Jürgen

Re: [V4.0 IP2] ModBus-Profil für E3DC S10X

Verfasst: Mo Aug 07, 2023 5:43 pm
von StefanW
Hi Jürgen,

das Problem bei Modbus ist, dass die Werte i.d.R rein Binär kodiert sind und es JEDER ANDERS macht.

Gerade E3DC hat da so manche Böcke geschossen, wie zwei verschiedene 8 Bit Werte in einem 16-Bit Register unterzubringen (als wenn es nicht 256.000 Register gäbe). :angry-banghead: :angry-argument: :confusion-helpsos: Überhaupt wegen E3DC haben wir die Bitmaske im Modbus Assistenten "erfunden".

Alle gängigen und auch denkbaren Varianten einstellen zu können, hat uns sehr viel Arbeit gemacht, der Assistent verdeckt den Aufwand dahinter. Wir haben mal die Anzahl der Iterationen versucht mit Excel zu berechnen und das war nicht möglich, weil irgendwas um 5120^64 herauskommt. Es ist einfach Crazy.

Ob Werte vertauscht sind oder nicht, also BigEndian oder LittleEndian (benannt nach der Art wie die Lilliputs in Gullivers Reisen ihre Eier aufschlagen, woraus dann ein Bürgerkrieg resultierte), liegt u.a. an der Prozessorarchitektur im Modbus Server (also dem "Slave") und das kennt man als Nutzer von außen nicht, daher sollte das deutlich in der Bedienungsanleitung stehen.


lg

Stefan