FSP 15KW Hybrid + US2000C Pylontech

Hallo in die Runde :wave:

ich bin seit längerem stiller Mitleser, weil ich meien Anlage richtig in den Griff bekommen möchte. Nirgends aber handfeste Infos finde. Ich habe gesehen, dass es hier Leute mit Erfahrung gibt. Vielleicht kann der ein oder andere mir helfen.

kurz zu meiner Anlage.

FSP 15KW Hybrid WR
8x US200C Pylontech
20KW Solar auf dem Dach

Ich bin von einem Qcells WR und Speicher auf den FSP umgestiegen, weil ich eine Anlage wollte die auch autark ist. Ziel ist es dass ich "zero-consumption-mode" den WR einstellen möchte, da wir einspeißen dürfen. Dazu habe ich schon einiges gemacht. Zuletzt habe ich festgestellt, dass trotz genügend Sonne und voller Akkus der Stromzähler fleißig Strom vom Netz bezieht. Also habe ich mich schlau gemacht und mir wurde geraten, dass ich die "Netzeinspeisekalibrierung R, S und T" von 0 Watt auf 90 Watt stellen soll. Das habe ich mit der "tollen" Software von FSP auch gemacht. Seitdem finde ich, dass der Netzbezug um einiges weniger geworden ist. Kann man da noch etwas optimieren? Kann man die Watt noch höher stellen um noch weniger Netzbezug zu haben?

Ich muss dazu sagen, dass ich keinen EnergyMeter dazwischen habe, weil der "Verkäufer" meinte, dass benötige ich für mein System nicht :idea:

Weiterhin sind die Pylontech ohne Kommunikation am WR angeschlossen und laufen dennoch. Ich möchte, dass die Akkus effektiver mit dem WR kommunizieren, hier habe ich gelesen, dass ich eine ModBus Karte benötige, wiederrum habe ich auch etwas von einer DualMod Box gelesen. Diese wurde aber immer im Bezug auf den 10 KW-WR aufgezählt. Ich blicke einfach nicht mehr durch, was der 15 KW-WR benötigt, damit das System ordentlich funktioniert.

Am Ende der ganzen Sache, möchte ich gern, dass ich die Verbauchsdaten auch irgednwie einsehen kann, ohne mit dem Laptop vorm WR zu stehen, dafür habe ich mir schon eine Raspbery besorgt und die Solaranzeige installiert. Was soweit auch geht, aber mich aktuell nicht zufrieden stellt. Bei meinem alten QCells WR gab es eine einfache App wo man alles gut un einfach einsehen konnte.
Denn mein Schwiegervater möchte gern, dass er im Arbeitszimmer mal kurz über seinen PC die Verbrauchsdaten einsehen kann.

Ich weiß, es sind Fragen über Fragen, aber ich hoffe hier Gleichgesinnte zu finden, die den selben Aufbau haben


Schönes Wochenende :wave:

Ich denke, hier hat dich der "Verkäufer" angeschwindelt oder selbst das Manual nicht gelesen.
Also mein Vorschlag:

  • Lies dir das Manual des 10/15kW Wechselrichters.
  • Du brauchst zwingend einen SDM630Modbus als "EnergyMeter " und eine Modbus-Karte (für Zero-consumption).
  • Alles für die Inbetriebnahme notwendige steht im Manual des 15k und dem der Modbus-Karte.

    Es gibt mittlerweile auch die Modbus Dual Box, damit du neben dem Smartmeter (SDM630) auch mit den Pylontech's kommunizieren kannst (über einen 2. RS485 Bus).
    Ich rate davon aber ab, weil du dir damit die einzige RS232 Schnittstelle des WR belegst (und damit auch die USB Schnittstelle blockierst).
    Somit kannst du nichts mehr "mitloggen".

    Bzgl. Logging: Entweder du gönnst dir einen dauerhaft laufenden Rechner auf dem SolarPower läuft oder du nimmst einen RPi o.ä. und nutzt eines der vielen OpenSource Lösungen (mpp-solar, infinipoll10k, Solaranzeige,...). Für eine Inbetriebnahme von sowas ist natürlich etwas IT-Fachwissen notwendig, aber auch hier hilft: lesen,lesen,lesen,... ;)

    Hallo uwachs, Rio,

    mein System passt hier perfekt dazu und ich bin auch gerade dabei, dieses System besser zu verstehen.

    Meine Anlage:
    - Solarpower24, 15kW3P (FSP Baugleich)
    - 13kWp, Ost/West
    - SDM630 e-meter an mobus intelligent slot
    - 2x US3000C an BMS box

    Ich habe die letzten Tage schon gewaltig mit Solaranzeige getestet. Raspi 4, Solarazeige rauf, sowohl Inverter-USB oder SDM auslesen im Single-Reglerbetrieb geht.

    Zudem habe ich auch das script von Rio ausprobiert (github riogrande75 suchen ). Hier speziell den SDM360poller. Doch mit dem Modbus TCP converter habe ich es nicht zum Laufen gebracht. Das script läuft zwar, aber es kommen nur gleiche, sehr kleine Werte im debug raus. Und SDM zeigt kein Telefon -Zeichen.

    Den SDM kann ich aber mit einem ModbusPoller über den Modbus/TCP unter Win sehr wohl auslesen.

    @riogrande75: Muss ich hier noch andere Skripte parallel starten?

    @uwachs: Du brauchst einen SDM. Und leider wieder einen Elektriker und eine Modbus-Leitung zum Inverter. Den restlichen Schmodder würde ich aber vorerst nicht kaufen und mal mit Raspi und Usb Modbus Konverter (FTDI Chip) erste Gehversuche machen.

    Weil, mit dem offiziellen Zeugs (2x Modbus- intelligent Slot für SDM und BMS box an RS232) wirst du keine Daten mehr loggen können.

    Gruß Ax

    Zum sdm630poller: Starte mal mit $debug=1 und poste was da daherkommt.

    Wahrscheinlich passen die Einstellungen am TCP-Modbus Adapter nicht. Poste mal die Settings davon.
    Welche Baudrate ist am SDM630 einstellt, welche Modbus-ID?

    Hallo Rio,

    ich habe tatsächlich den debug-modus bereits aktiv gehabt.

    Das script hat mir durch meine Installation von php 8.1 beim Start einige wenige Fehlermeldungen ausgegeben (ascii und statt {} in Zeile 90) und bei der Zeile mit shmod(delete) war nix zu machen, die Zeile habe ich auskommentiert. Ich habe ja kein shmod, das es löschen kann. Dann ist das script angelaufen. Ruhe für ca (geschätzt) 10 Sekunden, dann wurde Werte ausgegeben. Aber alle gleich und sehr klein- xyz E-53.

    Für einen Debug-log muss ich das nochmals installieren. Derzeit läuft Solaranzeige und schaufelt mal meine Verbrauchsdaten in meine DB. Wobei deine Lösung für mich fast besser ist, weil ich eigentlich einen zweiten Minicomputer im Keller eher verhindern will. Mir reicht eigentlich mein iobroker auf einem Minisforum MiniPC vom Wartungsaufwand :-). Ich meine verstanden zu haben, dass du deine Schnittstellen mit Moxa Konverter an eine übergeordnete Instanz schaufelst, richtig?

    Ich habe Raspian Lite installiert und php (8.1) und irgendwelche curl-extensions, sonst ist das System frisch!
    Gestartet habe ich das script mit $php /etc/SDMPoller/SDM360Poller.php, korrekt? Bin eigentlich eher unbedarft mit Linux, sorry.

    Zu den Einstellungen am Modbus TCP (Waveshare RS485 to WIFI/ETH):
    19,2k, 8 bit, no partity, 1 stop
    Der Adapter läuft als STA und Modbus TCP <--> RTU

    Baudrate am SDM ist ebenso 19,2 und ID1. Der Modbus TCP Adapter läuft als Server.

    Zudem habe ich mit diesen Einstellungen und "Modbus Poll" den SDM ansprechen können. Auch das Telefonsymbol mit ModbusPoll war am SDM zu sehen. Und der Inverter erkennt den SDM ebenso mit EC-ON1.

    Danke dir für deine Hilfe,
    Gruß Ax

    Naja, ist halt alles schwer zu sagen on debug log.
    Wenn du Fehlermeldungen hast (was durch div. Linux Distro's, PHP-Versionen und TCP-Adaptoren durchaus normal ist), dann musst du die posten.
    Einfach auskommentieren ist nicht so gut, bzw. musst du dir dann selber helfen können, weil ich ja deinen Code nicht mehr kenne.

    Hi Rio,

    werde ich auch tun. Da brauche ich noch ein bisschen Zeit. Danke vorerst.

    Soderle,

    Ausgangspunkt: Modbus TCP Adapter läuft und ist mit ModbusPoll (Win Modbus Poller) ansprechbar und auslesbar.
    Für diese Variante: Telefonsysmbol am SDM sichtbar. Hardware Modbus TCP und Verkabelung funktioniert also.

    Raspi Lite raufgeschmissen und php 7.4 installiert. Script in /etc/SDMPoller/ kopiert und folgende Anpassungen gemacht (in rot):
    #!/usr/bin/php
    <?php
    $debug = true;
    $filename1 = "/tmp/ACTsdm630.txt";
    $moxa_ip = "192.168.178.246"; // IP of the rs485/ip converter
    $moxa_port = 20108;
    $moxa_timeout = 10;
    $pause = 1000;

    KEINE sonstigen Veränderungen an deinem Script! Das script startet aus meiner Sicht ohne jegliche Fehlermeldung (da jetzt eben mit php 7.4).

    Log ausgelesen mit "$ journalctl -f":
    Nov 14 11:21:11 raspberrypi sudo[960]: pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/php /etc/SDMPoller/sdm630poller.php
    Nov 14 11:21:11 raspberrypi sudo[960]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
    Nov 14 11:21:11 raspberrypi SDM630POLLER[961]: SDM630POLLER Neustart

    Ausgabe in der shell:
    pi@raspberrypi:~ $ sudo php /etc/SDMPoller/sdm630poller.php
    1_HEX:
    1_L1_VOLT: 5.8774717541114E-39 V
    1_L2_VOLT: 5.8774717541114E-39 V
    1_L3_VOLT: 5.8774717541114E-39 V
    1_L1_AMPS: 5.8774717541114E-39 A
    1_L2_AMPS: 5.8774717541114E-39 A
    1_L3_AMPS: 5.8774717541114E-39 A
    1_L1_WATT: 5.8774717541114E-39 W
    1_L2_WATT: 5.8774717541114E-39 W
    1_L3_WATT: 5.8774717541114E-39 W
    1_FREQUEN: 5.8774717541114E-39 Hz
    1_P_TOTAL: 5.8774717541114E-39 W
    1_IMPO_WH: 5.8774717541114E-39 Wh
    1_EXPO_WH: 5.8774717541114E-39 Wh

    Im Minutentakt kommen dann immer wieder diese Zeilen...die Werte bleiben gleich.

    Ich hoffe, dass hilft dir mir zu helfen :slight_smile:

    Danke und Gruß Ax

    A/B vom RS485 mal vertauschen wäre mein erster Tip.

    Weiters: tcpdump trace.
    tshark -f "host 192.168.178.246" -w /tmp/sdm630.pcap
    Das Tracefile lässt du mir zukommen.

    Hi Rio,

    wie du mir aufgetragen, so getan...

    Siehe Dateianhang.

    Danke und Gruß Ax
    74777=11976-sdm630.7z|attachment (1.04 KB)

    Hmmm,

    nochmals probiert, jetzt habe ich folgende Ausgabe in der shell:
    1_HEX:00 00 00 00 00 0F 01 04 0C C1 27 A5 0C 41 1A 95 8F C2 4A FB D0
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L1_VOLT: 5.8801629478122E-39 V
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L2_VOLT: 1.6545612118124E-36 V
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L3_VOLT: -1.216512159918E-16 V
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L1_AMPS: -5.8063774128098E-26 A
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L2_AMPS: 5.9226384062136E-39 A
    1_L3_AMPS: 5.8774717541114E-39 A
    1_L1_WATT: 5.8774717541114E-39 W
    1_L2_WATT: 5.8774717541114E-39 W
    1_L3_WATT: 5.8774717541114E-39 W
    1_FREQUEN: 5.8774717541114E-39 Hz
    1_P_TOTAL: 5.8774717541114E-39 W
    1_IMPO_WH: 5.8774717541114E-39 Wh
    1_EXPO_WH: 5.8774717541114E-39 Wh

    Ich habe nix verändert....

    Gruß Ax

    Da sieht man klar, dass der USR den Request bekommt (Packet #6) aber von der RS485 Seite offenbar nichts zurückkommt.
    Also Script bis zum USR passt, der Fehler liegt entweder direkt an der Config des USR's oder dahinter (Kabel / SDM630).
    Poste mal Screenshot's mit den USR Einstellungen.

    Hier mal die Einstellungen- siehe Anhang

    Es tut sich was:
    1_HEX:01 04 98 43 6D AA D1 43 6D 0A F6 43 6B D6 B1 3F BD 1F C1 3E E3 0E 23 41 23 CB 12 43 88 60 EF 42 53 6E 0F 45 16 39 2E 43 AF 94 98 42 D2 3D D0 45 16 E4 C7 C2 6A 3B B9 C1 A8 E2 31 C2 C9 45 B8 3F 46 D7 CC 3F 00 B9 3B 3F 7E DC E0 C1 41 D7 FD C1 AE 2A 40 C0 19 6E 4E 43 6C D9 7D 00 00 00 00 40 81 AF A7 41 42 87 7B 00 00 00 00 45 2A 93 04 00 00 00 00 45 33 69 49 00 00 00 00 C3 34 4E 11 3F 73 63 FE 00 00 00 00 C0 70 14 82 00 00 00 00 42 48 0B 58 43 BD C8 10 3E C5 A1 CB EB F2
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L1_VOLT: 237.66725158691 V
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L2_VOLT: 237.04281616211 V
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L3_VOLT: 235.83863830566 V
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L1_AMPS: 1.4775315523148 A
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L2_AMPS: 0.44346722960472 A
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L3_AMPS: 10.237077713013 A
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L1_WATT: 272.75729370117 W
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L2_WATT: 52.857479095459 W
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_L3_WATT: 2403.5737304688 W
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_FREQUEN: 50.011077880859 Hz
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_P_TOTAL: 2729.1884765625 W
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_IMPO_WH: 379.56298828125 Wh
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    1_EXPO_WH: 0.38600000739098 Wh
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105
    PHP Deprecated: Invalid characters passed for attempted conversion, these have been ignored in /etc/SDMPoller/sdm630poller.php on line 105

    Das sind ja mal Werte, mit denen ich was anfangen kann!

    Einstellungen habe ich auf "Transparent Mode" geändert -siehe Anhang

    Und was mir auch auffällt:

    Das Skript macht sicher keine 1000us Pause!?!?!

    Das geht voll auf Dauerfeuer.

    Edit: Ich habe die $pause = 1 000 000 erhöht. Eine Million Microsekunden. Jetzt holt sich das Skript jede Sekunde einen Wert ab und das Telefonsysmbol ist am SDM zu sehen.

    Also läuft es nun, oder bekommst du noch Fehlermeldungen von Line 105?

    Wenn ja, dann liegt es an PHP>=7.4.
    In der Funktion hex2ieee754 musst du als erstes Statement (vor $bin = str_pad(base_convert...) folgendes einbauen:
    $strHex = str_replace(" ", "", $strHex);
    Werde das auch auf Github noch einbauen.

    Hallo Rio,

    ich habe auch noch die Pause ($pause=) angepasst. Und das mit dem Fehler in 105 werde ich anpassen.

    Danke dir für deine Hilfe. Ich habe sehr viel gelernt.

    Jetzt geht es an die Batteriekommunikation.

    Gruß Ax

    Passt!

    1_HEX:01 04 98 43 6C 7A 07 43 6D 2A 00 43 6F 48 4F 40 09 B6 91 3E B1 DB 1B 3F 10 A0 EC 43 E3 B0 F5 42 3D CC 13 42 74 A5 EA 43 FE 6B E7 42 A4 C5 06 43 07 2F 17 C2 E3 34 51 C1 56 72 C5 C2 CF 79 79 3F 65 E4 C0 3F 13 FE 33 3E E7 EB 9E C1 5F 63 07 C1 7B 7F 45 C2 6D CD AD 43 6D A4 1D 00 00 00 00 3F 82 BC 1F 40 44 1A 2F 00 00 00 00 44 0D 74 03 00 00 00 00 44 35 9A 5A 00 00 00 00 C3 66 BE 11 3F 47 66 F2 00 00 00 00 C1 B1 81 17 00 00 00 00 42 48 01 09 43 C4 5F 1B 3E C5 A1 CB D1 C9
    1_L1_VOLT: 236.47666931152 V
    1_L2_VOLT: 237.1640625 V
    1_L3_VOLT: 239.28245544434 V
    1_L1_AMPS: 2.1517679691315 A
    1_L2_AMPS: 0.34737476706505 A
    1_L3_AMPS: 0.56495547294617 A
    1_L1_WATT: 455.38247680664 W
    1_L2_WATT: 47.449291229248 W
    1_L3_WATT: 61.16202545166 W
    1_FREQUEN: 50.001010894775 Hz
    1_P_TOTAL: 565.81268310547 W
    1_IMPO_WH: 392.74301147461 Wh
    1_EXPO_WH: 0.38600000739098 Wh

    Bittesehr!

    Die Pause habe ich immer an die min. Zeit angepasst, jegliche Verzögerung wirkt sich ja negativ auf den Regelmechanismus des WR aus.
    Ich rate auch das ganze über Shared Memory zu machen, um hier die Verarbeitungszeiten zu minimieren.

    @riogrande75 Danke dir für deine Hilfe, ich habe in der Zeit sehr sehr viel gelesen und sehr sehr viel auch gelernt.

    Zwischenzeitlich hängt ein Raspberry mit Solar-Assistant am WR über USB und meine Pylontech hängen auch direkt am Raspberry, sodass ich alle Daten sehr gut einsehen kann. Ansonsten sind die Pylontech nur am Plus und Minus zum WR angeschlossen.

    Dennoch habe ich ein kleines Problem mit meiner Anlage, die tagsüber super läuft.

    Zur Info: mein ganzes Haus hängt am WR-Ausgang und ist demnach nicht Parallel.

    Ich habe immer noch mit Stromspitzen Nachts Probleme, dass der WR dann aufhört die Akkus zu entladen.

    Ich habe mich demnach mal mit den Pylontech und den C-Werten außeiandergesetzt und die Ausgangsleistung der Batterien entsprechend auf 150A eingestellt, um dies zu testen, ob es besser läuft.
    Das Problem ist immer noch da. Gestern Abend liefen zwischen 19 und 21 Uhr der Geschirrspüler und andere Dinge. Er hat ohne Probleme maximal 7,5kw (150A) aus den Batterien gezogen. Heute Morgen hat meine Frau für kurze Zeit heißes Wasser entnommen. Es gab eine Stromspitze von 10,5 kw, wobei er 7,4 kw aus der Batterie zog. Die Batterie fiel von 49,1v auf 47,8v ab, so dass die Batterien danach nicht mehr entladen wurden.(Laut WR ist die Abschaltspannung auf 47,8V eingestellt)
    Ich verstehe das nicht, warum funktioniert es abends ohne Probleme (hohe Stromspitzen) und morgens nicht, wenn die Batterie noch 58% bei 49,1v hat.
    Muss ich die Ausgangsleistung noch mehr drosseln, oder kann ich die Abschaltspannung der Batterien im Wechselrichter auf 47,5v herunterfahren, ohne sie zu beschädigen?