eCockpit Sunspec und Fronius GEN24 - MPPT Werte Skalierungsfaktor

Otwin

Level-1
Beiträge
134
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich lese meinen Fronius Wechselrichter mit einem 750-8202 mit eCockpit und der Sunspec Bibliothek aus.
Das klappt auch alles ganz gut, nur die DC-Werte der MPPTs machen mir Kopfschmerzen.

Hier gibt es einen Skalierungsfaktor aus dem ich überhaupt nicht schlau werde.
Ich habe dazu mal einen Screenshot angehängt.

Kann mir jemand sagen, wie dieser Skalierungsfaktor zu verstehen ist?
Im angehängten Beispiel wäre ja -1 ein Faktor von 1000 und -4 ein Faktor von 1.
Wenn das wirklich so sein soll, wie könnte ich das denn mathematisch umsetzten.


Viele Grüße
Otwin
 

Anhänge

  • Bildschirmfoto vom 2023-03-03 10-37-17.png
    Bildschirmfoto vom 2023-03-03 10-37-17.png
    38,1 KB · Aufrufe: 19
Die Sunspec ist recht seltsam und die Umsetzung durch die Hersteller manchmal noch komischer.
Ein Skalierungsfaktor von
-2 bedeutet Wert mal 10^-2 = 0,1
-4 bedeutet Wert mal 10^-4 = 0,001

Leistungswerte sind normalerweise in kW angegeben. d.h. 7.3 und Skalierung -1 = 7.3kW, 7.3 und Skalierung -4 = 7.3 W
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das passt doch aber nicht mit den Werten zusammen.
Die DC Power ist jetzt anders skaliert als heute morgen (60kW hab ich leider nicht, es sind nur 6kW) aber der Scalefactor ist immer noch -1
 

Anhänge

  • Bildschirmfoto vom 2023-03-03 12-40-11.png
    Bildschirmfoto vom 2023-03-03 12-40-11.png
    37,6 KB · Aufrufe: 10
Das hab ich schon hinter mir, die ist leider ähnlich erhellend wie die Wago Doku zur LibSunSpec.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lad dir die offizielle Sunspec Dokumentation herunter, dort gibt es eine Excel-Tabelle in der alle Model IDs beschrieben sind. Imho existiert bei den IDs bei denen fertig Gleitkomma übertragen wird, kein Skalierungsfaktor mehr. Und bei den anderen mit Ganzzahlen, besitzt üblicherweise jeder Wert seinen eigenen Skalierungsfaktor. Welchen Sunspec Datensatz liest du denn?
 
Das Problem besteht beim Datensatz I160.
Die Real-Werte, die ich bekomme brauchen auf jeden Fall einen Skalierungsfaktor, nur ändert sich dieser leider nicht entsprechend.
(siehe die beiden Screenshots weiter oben.)
Da habe ich einmal 2,xx kW und dann 60,xx kW und beides mal den Skalierungsfaktor -1
Anders beim Strom, da habe ich einmal 2,7 A und dann 8,3A. Passt beides. Der Skalierungsfaktor ändert sich aber von -4 auf -3.

Ich sehe bei den Werten ja auch überhaupt keine Notwendigkeit für einen Skalierungsfaktor, leider bin ich mir aber absolut sicher, dass meine Anlage keine 60kW liefert. Schade eigentlich :)
 
In dem Datensatz kommen die Werte aber als uint16 in Einheit Watt rein, und nicht als float, skaliert entsprechend dem übertragenen Skalierungsfaktor. Ich würde mir die beiden Register mal selber mit einem Modbus-Tool auslesen und dann nachrechnen. Denn mit einem Skalierungsfaktor -1 können nach der Umrechnung von Int nach Float keine 3 Nachkommastellen herauskommen, und nach Genauigkeitsfehler bei float sieht der Wert in deinem Screenshot auch nicht aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab Dir die Umrechnung angehängt wie sie funktioniert (S7- SCL). Weiß nicht mehr warum ich es so gemacht habe, aber so funktionierts.
Register solltest Du selber finden, sonst frag nochmal dann lade ich sie hoch. (Abend - heute wird Auto geschraubt :))

Code:
"DB_Fronius".WR2.String1_DC_A := UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[17]) / (10 ** (65536 - (UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[0]))));
            "DB_Fronius".WR2.String1_DC_V := UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[18]) / (10 ** (65536 - (UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[1]))));
            "DB_Fronius".WR2.String1_DC_W := UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[19]) / (10 ** (65536 - (UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[2]))));
            "DB_Fronius".WR2.String2_DC_A := UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[37]) / (10 ** (65536 - (UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[0]))));
            "DB_Fronius".WR2.String2_DC_V := UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[38]) / (10 ** (65536 - (UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[1]))));
            "DB_Fronius".WR2.String2_DC_W := UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[39]) / (10 ** (65536 - (UINT_TO_REAL("DB_MB_Client_PV2".Holdingregister_DC[2]))));
 
Zurück
Oben