Bidirektionales AC/DC Netzteil BIC-2200 von meanwell

@colton86 u.A.
Weil ihr gefragt habt... Hier einige gemessene Wirkungsgrade des BIC2200-24. Die AC Leistung habe ich mit einem PEAKTECH 9035 gemessen, die DC Spannung und Strom vom Netzteil selbst messen lassen. Für eine Einschätzung des Wirkungsgrads reicht das meiner Meinung nach aber aus.

Verbrauch im Leerlauf mit "Output off" : AC 13,7W

Wirkungsgrad bei :

  • Ladestrom 10A: 84,3%
  • Ladestrom 20A: 91%
  • Ladestrom 40A: 93,8%
  • Ladestrom 50A; 93,8%
  • Entladestrom 10A: 81%
  • Entladestrom 20A: 89,6%
  • Entladestrom 40A: 93,4%
  • Entladestrom 50A; 93,5%
Größere Ströme habe ich mir gespart, da sollte sich nicht mehr viel ändern. Die 93% Wirkungsgrad bei 75% Leistung aus dem Datenblatt scheinen zu stimmen. Interessant sind auch die Wirkungsgrade bei kleinen Leistungen, die ziemlich gut sind, wie ich finde.

Viele Grüße,

steve

Ein wirklich beeindruckender Wirkungsgrad!

Vielen Dank für die Verifizierung!

@stc Super! Genau solche Infos suche ich gerade :slight_smile: Vielen Dank!!! .

Mal zwei Fragen: 1. Wo hast Du es geschafft Stecker + Kabel für den CAN-Port ausfzutreiben. Ich werde nur bei den üblichen Apotheken fündig... 2. Hat sich das Rätsel um den zu hohen minimalen Lade/Entlade-Strom bei Dir gelöst? (laut Spec unter 1A, in der Realität aber eher Richtung 10A)?

Vielen lieben Dank vorab :O)

@macy Hi, die Stecker gibts bei Reichelt. Hab ich allerdings auch erst letztens gefunden. Such mal dort nach MeanWell Buchsenleiste Ich würde sagen, das sind die richtigen Buchsenleisten zum richtigen Preis.

Das Problem mit dem zu hohen minimalen Lade/Entladestrom hat der Mean Well Support behoben. Laut Support betrifft das nur frühere Versionen des Netzteils. Jetzt lassen sich die Ströme in beide Richtungen bis ca. 0,8A einstellen , wie es im Manual steht.

Viele Grüße,
steve

Gut zu wissen, dass es die bei Reichelt gibt :wink:
Werde ich mal welche mitbestellen.

Danke @stc für das Script, werde ich demnächst auch bei mir einsetzen.

Hattest du die Regelschleife von 3 Sek. noch weiter optimieren können? Bzw. was spräche dagegen, die Abfragezeit zu reduzieren (z.B. alle 0,5 Sek.)?

Hallo @elsol , es freut mich das du das script nutzen möchtest. Ich habe ich Zeit für die Regelschleife noch verändert und experimentiere da immer noch. Der Stromzähler liefert nur alle 2sec neue Werte und mit einer höheren Abfragefrequenz haben sich Regelschwingungen aufgebaut, die ich nur dadurch kleiner bekommen habe, indem ich die Regelung verlangsamt habe. Momentan pausiert die Schleife 3sec und braucht dann insgesamt ca. 6sec für einen Durchlauf.

Das kann aber bei Dir anders sein, wenn du z.B einen anderen Zähler hast, oder den Verbrauch direkt misst.

Ich hab mal einen Screenshot eines typischen Tages angehängt. Da sind die Schwingungen um die 0 zu sehen. Ich werte gerade aus ob und wenn ja wie viel der Akku aus dem Netz geladen wird, wenn die Regelung nicht ganz genau arbeitet. Sobald ich genaueres weiß berichte ich hier.

.Viele Grüße,

steve

Hallo zusammen,

hier noch mal ein Plot von heute, der ganz schön zeigt, wie ordentlich die Lade/Einspeise Regelung funktioniert. Der Akku lasse ich nie unter ca. 35Ah absinken und heute wurden 120Ah , ca. 3kWh, Solarüberschuss in den Akku geladen. Um 15:30 verringerte sich so langsam der Ladestrom, da die eingestellten 26,9V (3,36V/Zelle) erreicht wurden. Da könnte man sicher noch auf 27V (3,375V/Zelle) oder gar auf 27,2 (3,4V/Zelle) erhöhen, so ist es mir aber sicherer. Mit den Einstellungen habe ich heute 0,7kWh verschenkt. Entladeschluss ist bei 25,65V (3,2V/Zelle), könnte ich auch noch 50mV tiefer entladen um noch "Platz" im Akku zu generieren. Der Entladestrom war heute auf 15A begrenzt, ist mittlerweile wieder auf 25A (ca. 675W Einspeiseleistung).

Das example_charge_control.py im git ist genau die Version, das gerade läuft.

Zusätzlich gibt es im git ein script, das alle 2 min prüft, ob die Regelung läuft und die Logs aktuell sind. Wenn nicht, wird das Regelscript neu gestartet. Das ist leider alle paar Tage der Fall und irgendwie sehr schwer zu debuggen.

Viele Grüße,
steve

1 „Gefällt mir“

Hallo @stc . Super vielen Dank für die ganzen Tipps, Hinweise, Links, speziell zum CAN und die Quelle für die Stecker !!!

Das hat total viel geholfen, bzw. erst ermöglich.

Seit gestern läuft bei uns auch unser Akku (16x EVE 280mAh) an einer BIC-2200-48CAN mit einer Nulleinspeisungsregelung.

(Wobei als Controller ein Arduino MKR 1010 Wifi + CAN - Board verwendet wird).

Kann Dir echt nicht genug "Danke" sagen :slight_smile:

... was ich mich allerdings gerade Frage (ja, kommt etwas spät :O) ). Wie bekommt man eine BIC-2200 - basierende Anlage eigentlich beim Netzbetreiber angemeldet? Speziell der Punkt "Anti Islanding" macht mir sorgen. Das Anti-Islanding des BIC funktioniert zwar einwandfrei, aber ich finde keine Konformitätserklärung gemäß VDE-AR-N 4105. Ich vermute mal, dass ist eine Grundvoraussetzung. In der Hoffnung falsch zu liegen: Wäre super, wenn jemand mit Hinweisen/Tipps weiterhelfen könnte

Vielen Dank !

Es würde mich sehr interessieren mehr über deine Version mit dem Arduino zu erfahren.

Das mit dem selbst anmelden wird schwierig. Wie bei allem, was über ein Balkonkraftwerk hinaus geht. Das BIC-2200 benötigt meiner Meinung nach einen Festanschluss, ggf. zusätzlich einen externen NA Schutz für die VDE-AR-N 4105 , das beides nur ein Elektriker installieren darf. Die Anmeldung muss dann auch der Elektriker machen. Und ob dem Elektriker z.B. mein Aufbau mit Raspberry und selbst geschriebener Nulleinspeisung gefällt kann ja vielleicht noch sein, aber ob er dafür unterschreibt kann ich mir schwer vorstellen.

Ich hab ein Balkonkraftwerk angemeldet und der Akku läuft nebenbei mit ...

Gerade habe ich einen externen NA Schutz (enphase IQ Relais) zum testen da, der die Funktion nachrüstet. Das dient aber eher meiner "Beruhigung" , damit ist natürlich immer noch keine Anmeldung durch mich möglich, das ist jedenfalls mein momentaner Kenntnisstand.

Viele Grüße,
steve

PS. Ich hänge noch einen Plot von gestern an, wo der Akku endlich mal ordentlich Energie (ca. 3kWh) ab bekommen hat und seeehr wenig verschenkt wird;)

Hallo @stc,

ist eine sehr schöne Steuerung die ich gerne benutzen würde, habe aber keine wirkliche Ahnung von der Programmierung. Bisher kann ich den BIC über die Shell und ein IoBroker Skript steuern. Aber eben nicht wirklich Dynamisch sondern nur mit festen Werten.

Unklar ist mir auch noch die eigentliche Vorgehensweise.

Daten auf dem Pi speichern und die Datei example_charge_control.py kopieren und in charge_control.py umbenennen. Danach die Einstellungen der Grenzwerte und des

Energy Meter in der charge_control.conf vornehmen. Da ich eine Shelly Pro 3EM habe ist mir die Eintragung im Bereich für den Power Meter auch noch nicht ganz klar.
Danach die charge_control.py Starten.

Wenn ich Deine Daten nutze und die charge_control.py Starte bekomme ich folgende Fehlermeldung

pi@piaccu:~ $ /usr/bin/python Link entfernt
Traceback (most recent call last):
File " Link entfernt ", line 26, in <module>
ChargeVoltage = int(config.get('Settings', 'ChargeVoltage'))
File " Link entfernt ", line 781, in get
d = self._unify_values(section, vars)
File " Link entfernt ", line 1149, in _unify_values
raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'Settings'

Wäre Nett wenn Du mir bei der Lösung helfen könntest.

Hallo @christ-reg

ich versuchs mal. Die Fehlermeldung sieht so aus, als ob du bei der charge_control.conf etwas an den Namen der Variablen/Sektionen geändert hast. Mit den Energy Meter Einstellungen hat die charge_control.conf nichts zu tun, sie sorgt nur für die Einstellung des Ladeparameter des BIC. Eigene Erweiterungen werde nicht ausgewertet.

Das Energy_Meter wird in dem Block ausgelesen und aus dem String die interessanten Werte herausgeholt. Wichtig ist eigentlich nur "Power":

#-------------------------------------------------------------- Read Power Meter
# print ("Control Charge/Discharge")
stromzaehler = requests.get("http://put.your.url.here/cm?cmnd=status%2010")
stromz = stromzaehler.json()
stromz1 = (stromz['StatusSNS'])
# zeit = (stromz1['Time'])
stromz2 = (stromz1['Haus'])
Power = (stromz2['Power'])

Bei mir wird damit der Stromzähler ausgelesen und bei dir müsste an der Stelle der Shelly abgefragt werden. Ist der Shelly orginal oder mit Tasmota geflasht? Wenn Tasmota, könnte die Abfrage ziemlich ähnlich aussehen. Der json String wird geholt und der interessante Wert nach ein paar Zwischenschritten in eine Variable eingelesen (hier "Power".)

Oder ist der Shelly z.B. in ioBroker eingebunden? Dann kannst du den aktuellen Verbrauch vom MQTT Server bekommen.

Ich hab leider keinen Shelly, daher kann ich zum genauen Vorgehen keine Angaben machen.

Viele Grüße
steve

Ich denke der Shelly braucht eine andere Art der Abfrage

hallo@stc,

habe an der charge_control.conf nichts geändert und die gesamten Daten nochmals kopiert aber immer noch diese Fehlermeldung.

pi@piaccu:~ $ /usr/bin/python Link entfernt
Traceback (most recent call last):
File " Link entfernt ", line 26, in <module>
ChargeVoltage = int(config.get('Settings', 'ChargeVoltage'))
File " Link entfernt ", line 781, in get
d = self._unify_values(section, vars)
File " Link entfernt ", line 1149, in _unify_values
raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'Settings'

Vielleicht liegt es ja an der Python Version, welche verwendest Du?

Für das Auslesen des Shelly Pro 3EM habe ich eine Lösung gefunden. Daher die Frage welchen Teil ich im Stript ersetzen muss da meine Power Angabe "total_act_power" ist.

Grüße

mchrist

Sieht aus, als ob die Configparser nicht klappt

No section: 'Settings'

Hast du da eine ?

Kannst du deine Shelly 3EM Abfrage teilen ?

Hallo@rage76,

auf der Shelly Seite ist dieses recht gut dokumentiert shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/EM/#emgetstatus-example

Eingabe: Shelly IP/rpc/EM/GetStatus?id=0

Ausgabe:

{"id":0,"a_current":0.576,"a_voltage":228.8,"a_act_power":98.9,"a_aprt_power":131.7,"a_pf":0.80,"a_freq":50.0,"b_current":1.150,"b_voltage":228.2,"b_act_power":-217.6,"b_aprt_power":262.5,"b_pf":0.86,"b_freq":50.0,"c_current":1.327,"c_voltage":228.4,"c_act_power":135.7,"c_aprt_power":302.9,"c_pf":0.64,"c_freq":50.0,"n_current":null,"total_current":3.053,"total_act_power":16.957,"total_aprt_power":697.078, "user_calibrated_phase":[]}

Die Fehlermeldung verweist auf die lib python3.9 configparser Datei.

Ist die Änderung der Python Version eine mögliche Lösung?

Gruß

mchrist

Ich nutze python3

Hallo@rage76,

ist es die reine 3.0?

Gruß

mchrist

Bei mir 3.9.2

Welchen Wert vom 3EM nutzt du ?
Kannst du deinen python code mal reinstellen
Die Werte sehen wir etwas hoch aus.

Passt das so ?
powermeter = requests.get("http://" + cfg.http_ip_address + "/rpc/EM/GetStatus?id=0")
powerz = powermeter.json()
power = (powerz['total_aprt_power'])

"total_act_power":16.957,"total_aprt_power":697.078,