SMA Wechselrichter - SunSpec Tabelle 160

Hallo,

Ich verwende einen SMA-Wechselrichter (Sunny TriPower 25000TL). Ich habe versucht, ihn anzuschließen und die Daten über OpenEMS auszulesen. Es funktioniert perfekt. Gemäß unseren Anforderungen muss ich auch die DC-Werte vom WR bekommen. Aus der Dokumentation von SMA sind die DC-Werte DCA, DCV, DCW in SunSpecTable 160 (MPPT Inverter Extension Model) verfügbar (mit firmware package 3.10.05.R : Download link) .

Leider sehe ich diese Tabelle nicht in der DefaultSunSpecModel definiert. Ist diese Tabelle mit einem anderen Namen definiert, oder muss sie hinzugefügt werden?

viele Grüße
Laksh

Hallo Laksh,

sehr schön zu hören, dass es soweit funktioniert. Das DefaultSunSpecModel wurde automatisch aus der XML-Definition erstellt (siehe SunSpecCodeGenerator). Das Model 160 hat einen “Repeating Block”, der etwas komplizierter umzusetzen war und den ich deshalb nicht umgesetzt hatte:

Grundsätzlich sollte es aber möglich sein den ersten Repeating-Block einfach im DefaultSunSpecModel hinzuzufügen.

Gruß,
Stefan

Hallo Stefan,

Sorry nochmal, dass ich mich nach langer Zeit wieder melde. Ich habe mir SunSpecCodeGenerator angesehen, wie du es getippt hast. Ich hatte einige Zeit damit verbracht, es zu modifizieren, um “Repating block” wie den der SunSpec Tabelle 160 unterzubringen. Für meine Anwendung benötigte ich die DC-Werte von beiden MPPT-Trackern, d. h. von beiden “Repeating block”, so dass die Implementierung nur eines Blocks meiner Anforderung nicht genügte.

Ich stimme mit dir, dass es ein bisschen kompliziert sein könnte, deshalb habe ich nicht weiter mit dem SunSpecCodeGenerator gearbeitet. Stattdessen habe ich versucht, das Model für 160 direkt in das DefaultSunSpecModel einzubinden (im Anhang, noch nicht getestet!). Für den Moment ist das definitiv eine “Shortcut”.
SunSpec_160_OpenEMS_Model_13052021.java (6.5 KB)

Ich habe ein paar Fragen dazu:

  • Welchen SunSpecModelType muss ich für diese Tabelle verwenden?..INVERTER?. Die Tabelle gemäß SunSpec heißt: “MPPT Inverter Extension Model”

  • Ich habe mich auf automatisch generierte SunSpec Modelle gesehen, dass überall dort, wo eine EVENT - oder STATE - Point vorhanden ist, gibt es ein zusätzliches Modell wie z. B. S103_ST. Ist dies obligatorisch?? Tabelle 160 hat auch einige EVENT- und STATE point. Aber es ist nicht in SMA WR definiert.

vielen Dank im Voraus für deine Hilfe
Laksh

Kleines Update. Mein Code (der, den ich angehängt habe) hat funktioniert :slight_smile:

Hallo Laksh,

sehr gut, dass es funktioniert hat. Der Code sieht auf den ersten Blick gut aus!

zu 1: Der SunSpecModelType wird laut SunSpec durch die ID vorgegeben. Für alle 100er Models gilt INVERTER - siehe openems/SunSpecModelType.java at 2021.8.0 · OpenEMS/openems · GitHub, dort ist auch jeweils die Range angegeben.

zu 2: Register vom Typ enum16 representieren Enum-Werte, d.h. sie werden als normale unsigned Integer gelesen, aber jeder Wert steht für einen konkreten Status. Im Model 160 z. B. das Register evt, bei dem 0 für Ground Fault steht, 1 für Input Over Voltage usw. In OpenEMS definieren wir für solche Enum-Register jeweils auch eine Java Enum-Klasse, damit diese Informationen auch im OpenEMS verfügbar sind. Beispiel S103_ST:

Die Werte dieses Enums werden dann als letzter Parameter im Constructor für PointImpl übergeben.

Gruß,
Stefan