Solarspeicher (stationär)

From Open Source Ecology - Germany
Jump to navigation Jump to search
Beschreibung, Lizenz, Entwicklungsstand
Projekt: Soldorado Solarspeicher. Beschreibung: Das von OPEN SOLAR SYSTEMS erarbeitete Projekt, verfolgt die Idee, einen professionellen, kostengünstigen und intelligenten Solarspeicher zu entwickeln, der für kleinere PV-Anlagen, auf Dach- oder Balkonflächen geringeren Ausmaßes, den Grundlaststrom in einem Haushalt regenerativ abdecken kann.
StichwörterSolar; Energiespeicher; Sonnenenergie
LizenzAllgemeine Öffentliche GNU-Lizenz (GPL v3.0)
Statusaktiv
Erreichte StufenPrototyp gefertigt; veröffentlicht
Austausch
Kontakt
Urheber, Verfasser
Diskussion
  • Forum
  • Signal-Gruppe Solarspeicher
Ent­wickler­samm­lun­gen (engl. Repositories)
Daten
Ver­füg­ba­re Meta­da­ten (OKH Meta-Data)n.a.

Kurzbeschreibung

Das vorliegende Open Source Projekt „Soldorado Solarspeicher“ von OPEN SOLAR SYSTEMS basiert auf der Idee unabhängig von teuren kommerziellen Solarspeicherprodukten sowie unabhängig von der EEG Vergütung einen professionellen, kostengünstigen und intelligenten Solarspeicher zu entwickeln, der es ermöglicht auch bei PV Anlagen auf kleineren Dach- oder Balkonflächen den Grundlaststrom in einem Haushalt regenerativ abzudecken. Schon mit 4 Solarmodulen (ca. 1 kWP) und einer Speichergröße von 1,8 kWh können ca. 35 % des eigenen Stromjahresverbrauches durch Eigenerzeugung selbst gedeckt werden.
Die Investitionskosten liegen weit unter den kommerziell angebotenen Produkten. Somit besteht auch für Menschen mit wenig zur Verfügung stehender Fläche die Möglichkeit aktiv etwas für die Umwelt und langfristig etwas für den eigenen Geldbeutel und die eigene Unabhängigkeit zu tun.

Da im ersten möglichen Fall keine Einspeisung ins öffentliche Stromnetz erfolgt, wird der nicht benötigte Strom im Akkumulator zwischengespeichert und nach Erreichen der vollen Akkumulatorkapazität zur Brauchwassererwärmung genutzt.
Im zweiten möglichen Fall erfolgt die Beladung des Akkumulators und die Einspeisung ins Netz parallel (Rücklaufsperre bzw. Zweirichtungszähler vom Netzbetreiber notwendig).
Um die optimale Speicher- und PV Anlagengröße in Bezug auf die Wirtschaftlichkeit und Amortisation des Gesamtsystems zu ermitteln, wird zuerst eine detaillierte, stündlich aufgelöste Jahressystemsimulation in Abhängigkeit des Stromlastprofiles des jeweiligen Haushaltes durchgeführt.
Zur optimalen Auslegung steht ein umfangreiches Exceltool zur Verfügung. Zur Erhöhung des elektrischen Eigenverbrauchs können Funksteckdosen von der intelligenten Regelung gezielt angesteuert werden, um in Zeiten hoher Solareinstrahlung elektrische Verbraucher wie E-Bikeladung, Wasch- oder Geschirrspülmaschinen zu aktivieren.
Die Onlinevisualisierung erfolgt auf zwei Weboberflächen. Für die detaillierte Datenauswertung des Gesamtsystems erfolgt dies über das Web Frontend des „Volkszählers“. Um einen schnellen Überblick über aktuelle Verbrauchsdaten, Wetteraussichten, Speicherladung, Speicherstatus und eingesparte CO2 Summe zu erhalten, erfolgt dies über das Dashboard von Node-red, einer Plattform zur Integration und Programmierung von Akteuren des sogenannten Internet of things (Internet der Dinge).
Die offenen und hier dokumentierten Schnittstellen über Arduino, Raspberry bzw. Volkszähler bieten Entwickler darüber hinaus die Möglichkeit den Programmiercode weiter zu verfeinern und bspw. die Onlinevisualisierung ihren Bedürfnissen individuell anzupassen oder weitere intelligente Verbraucher anzusteuern.

Abbildung 1.1 GNU General Public License v3.0.pdf


Der hier dokumentierte Aufbau des Solarspeichers basiert auf Open-Source Hard- und Software und unterliegt der GNU General Public License v3.0.
Hinter Soldorado Open Solar Systems stehen wir freien Entwickler Thomas Plaz und Frank Richter. Sämtliche Verbesserungen und Weiterentwicklungen sind von uns Entwicklern ausdrücklich erwünscht, um eine schnelle Verbreitung zu ermöglichen und die Energiewende zu unterstützen. Alle Quelldaten sind unter Gitlab oder GitHub verfügbar (siehe obenstehende Links).

Projektbeschreibung

Motivation

Am Anfang dieses Projektes stand der Wille, endlich aktiv etwas für die eigene Umweltbilanz direkt Zuhause zu tun. Wir leben in Miete in einem kleinen Häuschen mit sehr beschränkter Dachfläche mit verschachteltem Dach in Ost und Westrichtung (max. 4 Solarmodule, insgesamt 1 kWP). Unser Jahresstromverbrauch liegt für die mittlerweile vierköpfige Familie bei etwa 1700 kWh/a. Unsere Wärmeerzeugung erfolgt (aufgrund der Mietverhältnisse) nach wie vor konventionell mit Öl.
Eine normale PV Einspeiseanlage kam für uns mit lediglich vier Modulen aufgrund des Mietverhältnisses und dem bürokratischen Aufwandes nicht in Frage. Wir wollten so viel Energie wie möglich selbst erzeugen und direkt verbrauchen. Laut Internetrecherche im Jahr 2015 waren aber kaum finanzierbare Systeme zu finden, die unseren Anforderungen genügten. Am Ende haben wir es mit dem 4 Panel Controller von Solarelectrix kombiniert mit zwei geschlossenzelligen 75Ah Bleiakkumulatoren (35Ah effektive Batteriekapazität) versucht. Ansatz war hier die Verwendung eines leistungsgeregelten Miniwechselrichters für die Grundlastdeckung im Haus. Die Auslegung des Speichers und des Wechselrichters erfolgte durch die Ermittlung eines wirtschaftlichen Optimums zwischen Eigenverbrauch, maximal zu erwartenden Energieertrag der zur Verfügung stehenden Dachfläche, Batteriegröße und Amortisationszeit. Die Amortisationszeit wurde mit ca. 13 Jahren berechnet. Die jährliche Co2 Einsparung liegt bei ca. 500 kg/a. Überschussstrom wird in der Batterie gespeichert, kein Strom sollte ins Netz zurück fließen. In den folgenden Monaten konnten wir mithilfe des open source Systemmonitorings „Volkszähler“ das Verhalten der Anlage genau studieren und optimieren. Nach und nach ersetzten wir alle Funktionen des 4 Panel Controllers durch eigene Regelalgorithmen mithilfe des Arduinoboards und erreichten deutlich höhere Leistungsumsätze des Systems sowie eine zuverlässige Batterieschutzfunktion. Unseren "fliegenden" Aufbau montierten wir 2017 in einen Schaltschrank. 2018 ersetzten wir die Bleiakkumulatoren durch ein Batteriemanagementsystems (BMS) und einen 60 AH Lithiumakkumulator. Immer mehr Funktionen wie z.B. eine Heizstabregelung zum Verbrauch des überschüssigen Stromes an sonnenreichen Sommertagen zur Trinkwarmwassererwärmung, eine schaltbare Steckdose zum Laden des E-Bike Akkumulators, VPN Zugang via App oder Browser auf alle Systemdaten von überall auf der Welt, Schalter für die Volleinspeisung des Wechselrichters und eine detaillierte Simulation des Gesamtsystems kamen nach und nach hinzu. Inzwischen deckt die Solaranlage im Jahresschnitt ca. 35% des Jahresstromverbrauches, trotz morgendlicher Verschattung und suboptimaler Solarmodulausrichtung. Da wir in vielen Fällen auf die Produkte der Open Source Community zurückgegriffen haben, ist es uns nun ein Vergnügen eine ausführliche Dokumentation unserer Entwicklung zu schreiben und unser Wissen öffentlich allen zur Verfügung zu stellen. Alle Bastler und Entwickler sind eingeladen mit uns ins Gespräch zu kommen und die Soft- und Hardware weiterzuentwickeln oder zu modifizieren. Wir hoffen damit viele begeistern zu können entweder selbst einen Solarspeicher zu bauen oder sich einen bauen zu lassen. Es gibt noch viele Dachflächen, die bisher aufgrund ihrer kleinen Fläche als unrentabel abgetan wurden, die mit diesem System nun auch effektiv und wirtschaftlich erschlossen werden können. Wir hoffen damit einen kleinen Teil zur konkreten Umsetzung der Energiewende und zur Vergrößerung der eigenen Unabhängigkeit beitragen zu können.

Mietobjekt ohne und mit PV Speichersystem

Einige Vorteile des Solarspeichersystems auf einen Blick

  • Kompletter Eigenverbrauch der erzeugten Energiemenge möglich in Form von Strom und Wärme
  • System auch als Einspeisesystem nutzbar
  • Hoher Systemwirkungsgrad (ca. 88-89%) durch DC gekoppelten Speicher (siehe Kapitel Systemwirkungsgrad)
  • Dezentrale Stromerzeugung zur Entlastung und Stabilisierung der Stromnetze
  • Anlage optimiert für kleine Dach- oder Balkonflächen (ab drei Modulen z.B. insgesamt 900WP) für die sich i.d.R. der Aufwand (EEG Anmeldung) für eine Einspeiseanlage nicht lohnt
  • EEG Anmeldung bei Verwendung der Überschussenergie als Wärme nicht notwendig
  • größere Unabhängig gegenüber Strompreissteigerungen
  • weniger Bürokratie bei Anlagenanmeldung
  • Verbesserung der eigenen CO2 Bilanz, Vermiedene CO2 Emissionen direkt ablesbar
  • kein Zugriff des Netzbetreibers auf die Steuerung des Stromspeichers oder gar auf Ihre individuellen Erzeugungs- und Verbrauchsdaten, aufgrund lokaler Datenspeicherung
  • Möglichkeit der Skalierung des Systems bis zu 25 Modulen (7,5kWP)
  • Amortisation des Solarspeichersystems innerhalb von ca. 12 Jahren
  • Für Weiterentwickler und Interessierte liegt der komplette Programmiercode und alle Schnittstellen offen zu Verfügung
  • Kostengünstige Lösung im Vergleich zu Mitbewerbern
  • Sekundengenaues Systemmonitoring über einen Webbrowser oder App im Heimnetzwerk oder verbunden über eine VPN Verbindung ermöglicht dem Nutzer über ein elektronisches Endgerät wie Smartphone oder Computer ständig Überblick über alle Systemparameter zu behalten
  • Optimierung des Eigenverbrauchs durch intelligent programmierbare schaltbare Steckdosen in zwei Betriebsmodi
  • Solares Laden des eigenen E-Bike Akkumulators möglich
  • Power to heat des Überschussstromes unterstützt im Sommer die Warmwasserbereitung und reduziert somit CO2 Emissionen und Laufzeiten der konventionellen Energieerzeugungsanlage
  • Systemkomponenten wie Wechselrichter und Akkumulator nur so groß gewählt, um ein optimales Verhältnis zwischen Wirtschaftlichkeit und gewünschter solarer Deckung zu erreichen

Projekthistorie und Ziele

2015:

  • Erste Ideen und Visionen, Kauf des Smappee Energiemnonitors zur Aufnahme des eigene Lastprofiles
  • Entwicklung eines Exceltools zur Jahressimulation des Speichers und Auslegung der Batterie und Wechselrichtergröße
  • Kauf und Montage von vier PV Modulen, von zwei Bleibatterien (70Ah geschlossen) und einer Regelung (4 Panel Controller von Solarelectrix).

2016:

  • sukzessiver Ersatz der Funktionen des 4 Panel Cotrollers, um die volle Leistungsfähigkeit des Mikrowechselrichters von 300W ausschöpfen zu können, sowie Integration sinnvoller Akkumulatorschutzfunktionen wie Tiefentlade- und Überladungsschutz.

2017:

  • Integration des Systems in einen Schaltschrank und Integration der Anlagenüberwachung mithilfe eines Raspbery Pi‘s
  • Anschluß eines geregelten Heizstabes zur Beheizung des Brauchwarmwasserspeichers bei Überschussstrom im Sommer.

2018:

  • Ersatz der Bleiakkumulatoren durch einen 60Ah LiFePo mit dem Batteriemanagementsystem von Libre Solar.
  • Integration von Funksteckdosen angesteuert über das MQTT Protokoll über Node Red
  • Integration der Anlagenvisualisierung über das Dash Board von Node Red
  • Konstruktion und Herstellung eines Gehäuses für das BMS

2019:

  • Verbesserung der Hard- und Software des BMS von Libre Solar
  • Ansteuerung des Wechselrichters über Softserial
  • Platinenredesign mit den nunmehr notwendigen Aufbauten, Zusammenlegen von Arduino- und Mosfetplatine zur Kostengünstigeren Produktion
  • Untersuchung der Skalierung des Systems auf 48V Systemspannung
  • Integration der Heizstabregelung

2020 / 2021:

  • Redesign des Schaltschrankes / Integration des Akkumulators in den Schaltschrank / Bau des 3. Protoypen
  • Komplette Neukonstruktion der sogenannten Hautplatine, die nun alle Funktionen der bisherigen Arduino- und Mosfetplatine und den Leistungsteil des Batteriemanagementssystems vereint
  • Gehäuseintegration der Hauptplatine
  • Umfangreiche Überarbeitung des Arduino Codes z.B. Integration der Auslesung von SML Zähler per Magnet-Lesekopf und Ansteuerung mehrerer Wechselrichter in Kaskade
  • Hauptplatine verfügt nun über die Möglichkeit der bidirektionalen Kommunikation zu Victron Ladereglern und der elektrischen Isolation zu allen Schnittstellen.
  • Neuauflage der BMS und SNS Platine unter Behebung kleiner Hardwarefehler

2021 / 2022:

  • Integration intelligentere SOC Berechnung im BMS
  • Erstellung Schaltplan des 3. Prototypen
  • Integration der Projektdokumentation und Quelldaten in GitLab

2023:

  • erfolgreiche Inbetriebnahme 3. Protoyp und Test aller Funktionen
  • 3. Protoyp in Regelbetrieb
  • Überarbeitung der SML Auswerteroutine
  • Aktualisierung des Frontpanels des NodeRed UI
  • Einbindung einer manuell oder automatisch schaltenden Schaltsteckdose bei Überschussstrom über NodeRed und MQTT
  • Integration der Überschusseinspeisung mit zwei Wechselrichtern (ca. 1kW) auch wenn Hauslast geringer ist (Bei einem System ohne angeschlossenen Heizstab ist es schade Solarenergie nicht zu nutzen wenn der Speicher voll ist)

Zukünftige Ziele:

  • Inbetriebnahme weiterer Solarspeicher, Anfragen werden gerne entgegen genommen

Systemaufbau

  1. Der Stromzähler 1 erfasst die PV Einspeisung und den elektrischen Verbrauch auf allen drei Phasen im Haus und kommuniziert mit der Steuereinheit 2
  2. Die Steuereinheit 2 regelt kontrolliert die Akkumulator(ent-)ladung 4 sowie die Wechselrichterleistung 3 den Heizstab 5 und die intelligente Zuschaltung elektr. Verbraucher und Smart Home Akteure 6
  3. In folgendem Diagramm ist die Wechselrichtereinspeisung orientiert am momentanen Hausverbrauch (Stromeinspeisung ins Hausnetz, grün) (1x INV 350 – 60 von AE Conversion max. 300W) sowie der Solarertrag (Ladereglerleistung, rot) und der momentane elektrische Hausverbrauch (Stromverbrauch, blau) dargestellt.

Der Solarertrag hat seinen Höhepunkt gegen 13Uhr erreicht. Der Wechselrichter bezieht seine Energie tagsüber direkt von den Solarmodulen und nachts aus dem Akkumulator. Solarenergie die nicht direkt verwendet werden kann wird tagsüber in den Akkumulator eingespeichert. Ist der Akkumulator voll wird die Überschüssige Energie entweder mithilfe eines Heizstabes in Wärme z.B. für die Trinkwarmwassererwärmung oder ins Netz eingespeist. Die solare Deckung beträgt für den 5.6.2019 59%. Im Vergleich hierzu ist in folgender Abbildung das System ohne Akkumulator und Heizstab in herkömmlicher Volleinspeisung dargestellt.

Es wurden hierzu zwei Wechselrichter (Typ INV 500 – 90 von AE Conversion max. jeweils 480W) eingesetzt. Ein Großteil der erzeugten Solarenergie kann aufgrund der Gleichzeitigkeit nicht für den eigenen Stromverbrauch verwendet werden.

  1. Ziel der Systemauslegung ist es die Deckung der elektrischen Grundlast im Haushalt (je nach Wechselrichtertyp 300W oder 500W) von ca. 0 - 300W bzw. 500W zu decken.
  2. Die intelligente Verbrauchssteuerung (2) ermöglicht mithilfe von Funksteckdosen (7) z.B. elektrische Verbraucher wie ein E-Bike Akkumulator, Wasch- und Spülmaschine bei vorhandener Überschussenergie zuzuschalten und erhöht somit den solaren Eigenverbrauch.

Funktionsprinzip

Solarenergie steht nicht zu jeder Tageszeit zur Verfügung. Die Grundlast eines Einfamilienhaushaltes liegt bei ca. 100 - 500W, je nach Anzahl elektrischer (Dauer-) Verbraucher. Die sinkende EEG Einspeisevergütung, sowie die begrenzte Belastbarkeit unseres Stromnetzes lässt zunehmend PV Systemkonfigurationen wirtschaftlich werden, die nicht auf maximalen Ertrag bei maximaler Fläche optimiert sind, sondern im jeweiligen Haushalt eine möglichst hohe Eigenverbrauchsquote bzw. solare Deckung ermöglichen. Dies wird durch die Zwischenspeicherung der Solarenergie im Akkumulator sowie mit intelligenter Steuerung der elektrischen Verbraucher erreicht. Energie soll zunehmend dort verbraucht werden wo sie entsteht. Angepasst auf das individuelle elektrische Verbrauchsprofil entsteht ein System mit wirtschaftlich optimierter Akkumulator- Größe und PV- Fläche. Für kleine Haushalte sind schon PV-Speichersysteme mit 3 PV Modulen (750WP) sinnvoll und ermöglichen auch bei begrenzter Dachfläche (z.B. bei Stadt-, oder Reihenhäusern oder Haushälften) wirtschaftlich etwas für die eigene CO2 Bilanz sowie für die Versorgungssicherheit zu tun. Größere Systeme haben Vorteile durch die niedrigeren spezifischen Installationskosten beim Handwerker. Bei kleinen Systemen kann dafür ggf. mehr in Eigenleistung erbracht werden.

Detaillierter Systemaufbau

Folgende Abbildungen zeigen die relevanten Systemkomponenten schematisch mit deren Schnittstellen sowie im realen Aufbau.

Komponentenwahl und deren Spezifizierung

Wechselrichter

Prototyp 2

Es wurde ein kostengünstiger, in seiner Leistung regelbarer Miniwechselrichter gesucht, der mit Systemspannungen von 24 - 48V umgehen kann und gleichzeitig über einen integrierten NA-Schutz nach VDE-AR-N 4105 verfügt. Der INV 350-60 bzw. INV 500 – 90 von AE Conversion mit RS485 Schnittstelle genügt diesen Anforderungen. Bei einer maximalen DC seitigen Stromaufnahme von 11A erreicht dieser AC seitig bei einer Systemspannung von 32V ca. 300W bzw. bei 48V ca. 450W. Der Miniwechselrichter INV 350-60 RS 485 ist ab 250€ brutto excl. Versand und der INV 500-90 RS 485 für 297 € bis 320€ brutto excl. Versand erhältlich. Nachteilig ist der hohe Platzbedarf im Schaltschrank aufgrund der wasserdicht ausgeführten Anschlusskabel. Das neueste Modell von AE Conversion INV 315-50 (ab 150€ brutto) ist deutlich kleiner, verfügt aber über keine RS485 Schnittstelle sondern nur über eine kabellose Schnittstelle.

Prototyp 3

Für die Weiterentwicklung des Solarspeichers wird eine Version des Wechselrichters „MICRO INVERTER, INV500-90EU RS485“ verwendet, die von AE Conversion an Firmenkunden als Batteriewechselrichter verkauft wird. Vorteil dieser Variante ist der geringere Platzbedarf im Schaltschrank durch sein kompakteres Gehäuse und Anschlussstecker. Auch wenn der Wechselrichter als „Batteriewechselrichter“ verkauft wird muss noch aktiv per Schnittstelle der Batteriemodus vor jedem setzen einer Leistung mitgeteilt werden. Werden mehrere Wechselrichter hintereinander angesprochen, so ist zwischen den Befehlen eine Mindestzeit von einigen Millisekunden (z.B. 800ms) abzuwarten, damit die Antwort des ersten Wechselrichters nicht mit dem Befehl für den zweiten Wechselrichter kollidiert.

Es kommen folgende Stecker zum Einsatz: AC seitig wird folgender Gegenstecker benötigt: Adels-Contact 165663V9 Netz-Steckverbinder. DC seitig wird für die Stromversorgung und Kommunikation folgender Gegenstecker mit Crimpkontakten benötigt: MolexCrimpgehäuse-Mini-FitJr-2x6-polig-Stecker MOLEX39012121.

Wechselrichter_OEM_Version_MICRO_INVERTER_INV500-90EU_RS485
Berechnung der Wechselrichteradresse

Die Adresse des Wechselrichters kann auch berechnet werden. Die Formel lautet: Adresse = (Seriennummer des Wechselrichters Modulo 32) + 1

Beispiel:

Seriennummer des Wechselrichters: 0405500348 Seriennummer des Wechselrichters Modulo 32: 28 (berechnet mit Modulokalkulator)

Es errechnet sich somit die Wechselrichteradresse 29.

Protokoll und Kommunikation

Mit dem Miniwechselrichter kann über zwei verschiedene Protokolle kommuniziert werden:

  1. KACO/Schueco Protokoll (ASCII String): bidirektionale Kommunikation
  2. AESGI-Protokoll (HEX String): bidirektionale Kommunikation

Grundsätzlich ist die Kommunikation mit dem WR nur bei ausreichender Energieversorgung über die angeschlossenen PV Module bzw. Akkumulator möglich. Tritt eine Versorgungslücke ein, so sind die im WR gespeicherten Werte (z.B. Tagesenergieertrag) verloren. Ein Abschalten des MPP Tracking Modus im WR für den Betrieb an einer Konstantspannung aus einem Akkumulator ist nur mit dem AESGI Protokoll möglich (siehe Abschnitt AESGI Protokoll). Die Kommunikation erfolgt über die RS 485 Schnittstelle. Mehrere Wechselrichter können in Reihe an die serielle Kommunikation angeschlossen werden. Jeder WR besitzt eine WR-Adresse, die für eine eindeutige Kommunikation notwendig ist. In der Regel sind das die 3 letzten Stellen der Seriennummer. Alternativ ist es möglich, die Seriennummer sowie die Softwareversion schnell und komfortabel über das per Download frei erhältliche Programm AE Solar von AE Conversion herauszufinden. Hierfür sind folgende Anschlussdetails zu beachten: Für die Kommunikation werden nur zwei Adern (Paar 3) des CAT 5 Kabels benötigt. Draht A des RS-485-Bus wird an Pin 6 angeschlossen und Draht B auf Pin 3. Zusätzlicher Pin 8 und der Kabelschirm werden an Erde angeschlossen, um gegen elektromagnetische Einflüsse zu schützen.

Um eine Kommunikation mit dem Computer herzustellen wird noch ein RS485 USB Adapter benötigt (z.B. Reichelt: RPI USB RS485 Raspberry Pi - USB-RS485-Schnittstelle, CH340C [1]) den es für wenige Euro im Internet zu kaufen gibt. Für Kommunikationstests zwischen Computer und Wechselrichter empfiehlt sich das Programm HTherm, das frei zum Download im Internet erhältlich ist. Folgende Voreinstellungen sind für die serielle Kommunikation notwendig:

Serial port configuration
Baud rate 9600
Data bits 8
Parity None
Stop bits 1
Flow control None

Im Programm AE solar besteht nun, wie in nachfolgender Abbildung dargestellt, die Möglichkeit den WR über einen Suchlauf zu suchen und damit dessen WR Adresse zu ermitteln. Ebenfalls in der Abbildung dargestellt ist die Antwort des Programms AE Solar auf den Kommunikationstest.

Weiterhin besteht die Möglichkeit sich die Leistungsdaten in einer Verlaufsgraphik darstellen zu lassen oder die Wechselrichterleistung zu steuern. Der Standbyverbrauch beträgt ca. 30 mW (INV350-60).

3. Details KACO/(Schueco) Protokoll
Dieses Protokoll liefert vom Miniwechselrichter gemessene AC-Leistung, AC-Spannung, AC-Strom, Tagesenergie, DC-Leistung, DC-Spannung, DC-Strom, WR-Temperatur und WR-Status in einem einfach lesbaren ASCII String. Weiterhin ist es möglich dem WR eine Leistungsreduzierung in Prozent der Maximalleistung des WR vorzugeben Ursprüngliche Beschreibung und Aufschlüsselung des AESGI Protokolls sind zu finden unter: [2]

4. AESGI-Protokoll
Das AESGI Protokoll basiert im Gegensatz zum KACO Protokoll auf dem hexadezimalen Zahlensystem und hat den großen Vorteil, dass das MPP Tracking des Wechselrichters ausgeschalten und dieser somit optimal zum gesteuerten Entladen eines Akkumulators verwendet werden kann. Diese Option gibt es ab der Software Version 0.9.16. Grundlage für die hier dokumentierten Befehle stellt folgender Foreneintrag im Photovoltaikforum dar (S.8 Eintrag J. Becker 16. Juli 2016): [3]

Folgende Tabelle schlüsselt die wesentlichen Befehle auf, die umgewandelt in das hexadezimale Zahlensystem, dem Wechselrichter direkt über die serielle Schnittstelle zugesendet werden kann.

Kurzzeichen Überschrift
<ID> zweistellige WR-Nummer
<_> Leerzeichen
<z> Prüfsumme
<LF> Zeilenumbruch (line feed)
<CR> Zeilenumbruch (carriage return)
Aufgabe Anfrage Antwort Bemerkung
Ausgabe Wechselrichtertyp #<ID>9<CR> <LF>*<ID>9_PV350W_z<CR> -
aktuelle Messdaten abfragen #<ID>0<CR> <LF>*<ID>0___0_45.7_1.23____55_230.1_0.21____50_45___635_z>CR> (Beispiel)

von links nach rechts: 0 Status 45.7 Eingangsspannung V (oft sehr ungenau!) 1.23 Eingangsstrom A 55 Eingangsleistung W 230.1 Netzspannung V

Betriebsmodus setzen #<ID>B_m_uu.u<CR> <LF>*<ID>B_m_uu.u_z<CR> m = 0 = MPP-Modus,

m =2 = Spannungs- und Stromvorgabe uu.u abhängig vom Typ 20.0-60.0V oder 40.0-80.0V, bei Modus 0 immer 00.0 verwenden. Der WR reduziert im Modus 2 bei Erreichen der angegebenen Spannung (von oben) die Leistung bis auf Null (Eingangsstrom dann noch einige 10 mA!!!)

Leistungsreduzierung setzen #<ID>L_001<CR> <LF>*<ID>L_001_z<CR> nur im MPP-Modus sinnvoll,

(1-100%, hier 1% Ausgangsleistung)

Leistungsreduzierung abfragen #<ID>L<CR> <LF>*<ID>L_001_z hier 1% Ausgangsleistung
Stromvorgabe setzen #<ID>S_ii.i<CR> <LF>*<ID>S_ii.i_z -
Stromvorgabe abfragen #<ID>S<CR> <LF>*<ID>S_ii.i nur im Modus 2 sinnvoll!


Beispiele: Folgende Beispiele sind für einen Wechselrichter mit Wechselrichternummer 32, bei max. 60V:

  1. WR auf Modus 2 setzen (Spannungs- und Stromvorgabe):
    • Anfrage: #32B_2_27.0<CR>
    • Antwort: <LF>*<ID>B_2_27.0_z<CR><br>
  2. WR Stromvorgabe setzen (um Leistung zu reduzieren):
    • Anfrage: #32S_08.0<CR>
    • Antwort: <LF>*<ID>S_08.0_z<br>


In HTherm werden oben genannte Befehle in Ascii in das Eingabefeld eingegeben und das Häkchen bei „HEX“ gesetzt sowie soll nach jeder gesendeten Zeile eine CR (carriage return) zum Abschluss der Zeile angehängt werden:

Die Leistungsanpassung erfolgt im Arduinocode unter Reiter „WR“ in der Funktion „sendPowerAESGI4(int P_WR_temp)“ (siehe Abschnitt "Quellcode Arduinoboard"). Die Leistungsanpassung des Wechselrichters erfolgt durch die Vorgabe des Stromes. Der gesetzte Betriebsmodus 2 (Spannungs- und Stromvorgabe) geht nach Unterbrechung der Stromversorgung des Wechselrichters verloren. Quelle: [4]

Wirkungsgradkennlinie Wechselrichter Prototyp 2

Die Datenauswertung der AC und DC seitigen Wechselrichterleistung ermöglicht die Berechnung des Wechselrichterwirkungsgrades in Abhängigkeit der Wechselrichterleistung. Es ist zu erkennen, dass der Wirkungsgrad erst ab einer Leistungsabgabe von ca. 90W bei durchschnittlich 91% liegt. Bei 23W ergeben sich 78% Wechselrichtungswirkungsgrad.


Wirkungsgradkennlinie Wechselrichter Prototyp 3

Der im Prototyp 3 verbaute Microwechselrichter MICRO INVERTER, INV500-90EU RS485 hat eine maximale DC seitige Stromaufnahme von ca. 10,5A (bei ca. 49,4V primärseitiger Spannung) und hat folgenden Wirkungsgradverlauf:

PV Module

Prototyp 2

Durch die um 90° versetzt angeordneten Dachhälften sind je zwei PV Module nach Südost und zwei PV Module nach Südwest gerichtet montiert (siehe Abbildung in Abschnitt "Motivation") und in Reihe angeschlossen (Nennspannung Un = 62,8V). In der Verwendung sind vier SW 260 poly Module mit 260Wp von Solarworld. Diese haben eine Abmessung von L x B x H von 1675mm x 1001mm x 33mm, wiegen jeweils 18kg und haben eine Nennspannung von Un = 31,4V und einen Nennstrom von In = 8,37A. Die Dachbefestigung erfolgt mittels Nutensteinen auf jeweils zwei Modultrageschienen aus Aluminium. Diese wiederum sind pro Modulfeld mit sechs Dachhaken für Pfannenziegel an den Dachsparren festgeschraubt. Die Modulerdung erfolgt mithilfe eines 10mm^2 dicken grün-gelben Erdungskabel (Litze H07V-K 1 x 10 mm²), das im Hausverteilerkasten auf die Potenzialschiene aufgeklemmt ist. Zum Anschluss der Module wird ein Ölflexkabel 6mm^2 verwendet. Jeweils zwei Module sind im Schaltschrank in Reihe geschaltet. Ebenfalls möglich und kabelsparend ist die direkte Verschaltung der Module mittels PV Stecker (MC4 Stecker) auf dem Dach. Sehr benutzungsfreundlich sind die PV Stecker der Firma Weidmüller, für die keine Crimpzange zur Befestigung der PV Stecker am Kabel notwendig sind. Das Kabel wird abisoliert bis zum charakteristischen „Klick“ eingeschoben und sind irreversibel aber schnell und sicher am Kabel befestigt.

Prototyp 3

Der 3. Protoyp ist ausgelegt für 6 Solarmodule (Solarworld SW 280 Wp, 60 Zellen, mit STC Uo: 39,5 V; Umpp: 31,2 V; Isc: 9,71 A; Impp: 9,07 A) wobei jeweils 3 in Reihe geschaltet sind. Die Solarmodule sind auf einem flachen Garagendach in zwei Reihen zu je 3 Modulen unter einem Winkel von 10° hintereinander angeordnet. Die Ausrichtung beträgt 165° Süd-Süd Ost. Die Solarmodule befinden sich auf dem Garagendach zwischen zwei Gebäudekomplexen wie auf folgenden Bildern zu erkennen ist.

Überstromschutz

Die Modulerdung erfolgt mithilfe eines 10qmm dicken grün-gelben Erdungskabel (Litze H07V-K 1 x 10 mm²), das im Hausverteilerkasten auf die Potenzialschiene aufgeklemmt ist. Es besteht neben der direkten Modulerdung die Möglichkeit der Integration eines Kombischutzes für die Ableitung von Blitzströmen und Schutz vor Spannungsspitzen. Beim Prototyp 3 wurde hierzu der Kombiableiter CITEL - DS50VGPV-1000G/12KT1 verwendet. Es erfolgt der Anschluss des positiven PV Strings sowie des negativen PV Strings an den Kombiableiter und der Anschluss an die Hauserde. Es sollte ebenfalls mindestens ein 10qmm grün-gelbes Erdungskabel (Litze H07V-K 1 x 10 mm²) verwendet und direkt an der Hauspotenzialschiene angeschlossen werden.

Laderegler

Prototyp 2

Durch die unterschiedliche Dachausrichtung sind im vorliegenden Projekt zwei Laderegler mit integriertem MPP Tracking in Verwendung an die jeweils 2 Module mit 60 Zellen angeschlossen sind. Es handelt sich um zwei Victron MPPT 100-15, die über eine Schnittstelle und eine tauschbare 20A Sicherung verfügen.

Prototyp 3

Es werden insgesamt 6 Solarmodule verwendet wobei 2 Strings parallel angeschlossen sind und bei jedem String jeweils 3 Module in Reihe geschaltet sind. Mithilfe von Abschnitt „Registerkarte 7 Ladereglerauslegung“ wurde hierfür der Laderegler Victron BlueSolar MPPT 150/35 ausgewählt.

Maximal erlaubte Leerlaufspannung: 150V; vorhanden 3 x 39,5V = 118,5V

Maximal mögliche Strombelastung des Ladereglers: 35A; vorhanden: 3 x 9,71A = 29,13A

Schnittstelle

Die Schnittstelle läuft bei Victron Energy unter dem Namen „VE.Direct serial communication“ und erlaubt den einfachen Zugriff auf die aktuellen Leistungsdaten des Ladereglers, diverse Ertragswerte und erlaubt die Einstellung der Batterieparameter sowie ein Update der Geräte-Software. Das „VE-Direct interface“ verfügt über zwei Kommunikationsmodi: den textbasierten Modus sowie den „hex“ basierten Modus. Im „hex“ basierten Modus ist es nicht nur möglich Daten des Ladereglers auszulesen, sondern auch Parameter und Einstellungen dem Laderegler vorzugeben (bidirektionale Kommunikation). So ist bspw. eine Reduktion der Leistung von der übergeordneten Steuereinheit oder bei mehreren Ladereglern in einem System die Vorgabe eines Master bzw. Slaveladereglers möglich. Ausführliche Informationen zur Kommunikation finden sich im pdf „VE.Direct-Protocol“ sowie im dazugehörigen „Whitepaper“ unter: [5]. Zum physikalischen Anschluss der Schnittstelle verkauft Victron einen Schnittstellenwandler (VE.Direct to USB interface cable), der das 5V TTL Signal des Ladereglers auf den USB Standard umwandelt. Um eine Kommunikation mit dem Computer über die auf der Homepage verfügbare Software „VE Power Setup“ zu erlangen genügt ein einfacher TTL – USB Wandler, der im Internet für wenige Euros zu erstehen ist (z.B. cp2102, ft232rl). Mit der Software ist es inzwischen über eine moderne Benutzeroberfläche möglich, die aktuellen Betriebsdaten des Ladereglers auszulesen. Weiterhin ist es möglich die Gerätesoftware des Ladereglers zu aktualisieren und die entsprechenden Einstellwerte für den Schutz des angeschlossenen Akkumulators einzustellen.

Anschluss der Schnittstelle

Für eine bidirektionale Kommunikation ist folgender Anschluss vorzunehmen:

Schnittstelle Laderegler Victron MPPT 100-15

Entsprechend der abgebildeten Pinbelegung am Schnittstellenstecker des Ladereglers ist der Anschluss „A“ des TTL-USB Schnittstellenwandlers mit VE.Direct-TX zu verbinden und der Anschluss „B“ mit VE.Direct-RX. GND und Power+ bleiben offen. Folgendes Anschlusskabel sollte verwendet werden: "Konfektionierte Litze Polzahl Gesamt 4 Rastermaß: 2 mm"

Im vorliegenden Projekt wird das Schnittstellensignal direkt ohne Schnittstellenwandler an der Steuereinheit (Arduino) angeschlossen und ausgelesen. Folgende Einstellungen sind für die serielle Schnittstelle notwendig:

Serial port configuration
Baud rate 19200
Data bits 8
Parity None
Stop bits 1
Flow control None

Folgende Daten werden von beiden Ladereglern mithilfe der Steuereinheit (Arduino) ausgelesen:

  • Laderegler Erzeugung
  • Laderegler Leistung
  • Laderegler Ladestrom
  • Laderegler Batteriespannung
  • Laderegler Status
  • Laderegler Errorcode
Vorgehensweise Anschluss und Einrichtung des Ladereglers
  • Zuerst wird der Laderegler an den Akkumulator angeschlossen, sodass dieser die Systemspannung erkennt. Danach wird der Laderegler an die PV Module angeschlossen. Im vorliegenden Projekt wird der Lastausgang des Ladereglers nicht benötigt, da die Intelligenz für den Tiefentladeschutz sowie der Überladeschutz für den Akkumulator im externen Batteriemanagementsystem integriert ist. Der schematische Aufbau ist in folgender Abbildung dargestellt:
  • Zur Einrichtung des Ladereglers das Schnittstellenkabel mit dem USB Wandler wie im Abschnitt „Anschluss der Schnittstelle“ beschrieben verbinden
  • Installation und Starten des Programms "VE Power Setup" von victron energy
  • Über den Button „Connect to this Computer“ Verbindung zum Laderegler herstellen
  • In der Hauptansicht sind die aktuellen Werte des Ladereglers wie z.B. aktuelle Leistung, erzeugte Wattstunden, aktuelle Akkuspannung, aktueller Ladestrom und Ladereglerstatus zu erkennen:
  • bulk --> Batterie wird geladen
  • absorption --> Konstanstspannungsphase
  • float --> Ladeerhaltung
  • Über das Zahnrädchen in der rechten oberen Ecke werden die Einstellungen abgerufen. Zuerst sollte die Firmware mit einem Klick auf „Update“ unter Reiter „Produkt-Info“ aktualisiert werden.
Prototyp 2
  • Unter Einstellungen werden nun für den LiFePo Akkumulator mit neun Zellen folgende Parameter eingestellt (Firmware: v1.56):
Eigenschaft Parameter
Batteriespannung 24V
Max. Ladestrom 15A
Batterievoreinstellung Benutzerdefiniert
Expertenmodus On
Absorptionsspannung (Konstantspannung) 31,05V
Maximale Konstantspannungsdauer 30min
Erhaltungsspannung 31,05V
Ausgleichsspannung 31,05V
Schweifstrom 2A
Automatischer Zellenausgleich Deaktiviert
  • Unter dem Reiter „TX“ Port „normale Kommunikation“ einstellen
  • Unter dem Reiter „RX“ Port „Ein/Aus Fernsteuerung“ einstellen
  • Unter dem Lastausgang „Immer aus“ einstellen
  • Straßenlichtfunktion „aus“ einstellen
Prototyp 3
  • Unter Einstellungen werden nun für den LiFePo Akkumulator mit 15 Zellen folgende Parameter eingestellt:
Eigenschaft Parameter
Batteriespannung 48V
Max. Ladestrom 35A
Konstantspannung 51,75V
Maximale Konstantspannungsdauer 30min
Erhaltungsspannung 51,75V
Ausgleichsspannung 0V

Akkumulator

Prototyp 2

Für den 2. Prototypen werden neun Zellen a 3,2V-3,6V des Lithium-Eisen-Mangan-Phosphat Akkumulator von Innopower INNO-LFMP 60 AH (1,73kWh) verwendet. Diese wurden inklusive Transport im Jahr 2018 für 313 €/kWh netto bezogen. Detaillierte Infos zum Aufbau, Verkabelung und Anschluss an das BMS ist in der Doku auf [6] in der Rubrik BMS 24V im Abschnitt "Schematischer Aufbau, Komponenten Akkumulator" zu finden.

Prototyp 3

Für den 3. Prototypen werden 15 Zellen a 3,2-3,6V des Lithium-Eisen-Mangan-Phosphat Akku von Innopower INNO-LFMP 60 AH verwendet. Es entsteht somit ein Akkupack mit 48V – 54V Spannung mit einer Speicherkapazität von 60Ah bzw. ca. 3 kWh.

Abmessungen Zelle: 125x65x185mm, Gewicht:ca.2,0 kg pro Zelle. Innopower liefert den Akkupack per Post fertig mit Kunststoffband verspannt incl. Polverbinder, Polschrauben und Zellabdeckung. Die Zyklenzahl ist bei einer DoD (Depth of Discharge) von 80% mit >= 5000 angegeben. Der Hauptanschluss erfolgt über zwei 16qm Kabel, die Absicherung über einen Lasttrennschalter Typ: Siemens 5SG7113 und einer Schmelzsicherung D02 32A gG 400Vschw NEOZED Sicherungseinsatz. Der gesamte Akkupack kommt im Schaltschrank unter und wird mit Gurten an der Montageplatte verspannt um ein Herausrutschen/Umkippen zu vermeiden. Die von Innopower mitgelieferten Zellabdeckungen dienen als Berührungsschutz und Kurzschlussschutz und werden nach Montage auf die Oberseite der Zellen aufgeclipt. Da 15 Zellen in Verwendung sind, muss auf dem BMS Board der IC BQ 76940 verwendet werden. Siehe hierzu die ausführliche Doku unter 24-48V_BMS Schaltplan und Boarlayout sind im aktuellen Repo unter [7] zu finden. Beim Anschluss des Akkumulators ist besonderen Wert auf die korrekte Zellzuordnung bei der Belegung des Molexstecker J1 / J2 zu achten, zu finden im oben verlinkten Schaltplan des BMS. Da beim 3. Prototypen das Switch-N-Sense Modul auf dem Solar-Storage-Controller mit aufgebracht ist, entfällt die Verwendung des separaten SNS Modul. Das BMS kann also nach Variante 1 unter 24-48V_BMS#Hardware.C3.A4nderungen verwendet werden.

Steuer- und Regelzentrale

Prototyp 2
ArduinoBoard

Die Steuerzentrale des Solarspeichers ist das Arduino Board. Hier laufen alle Informationen aus den Teilkomponenten wie Laderegler, Modbuszähler, Batteriemanagementsystem und Temperatursensoren zusammen. Das Arduino Board errechnet die jeweils aktuelle Leistungsvorgabe für den Wechselrichter und stellt dem Raspberry Pi die notwendigen Daten zur Visualisierung über das Node Red User Interface bzw. Volkszähler Frontend zur Verfügung. Es wird ein Arduino Mega 2560 verwendet, das über vier serielle Hardware-Schnittstellen verfügt.

  • Schnittstelle 1: Binärprotokoll zum BMS
  • Schnittstelle 2: Modbus-Protokoll zum Modbuszähler
  • Schnittstelle 3: VE.direct Serial Communication zum Laderegler
  • Schnittstelle 4: Textbasiertes Protokoll zum Raspberry Pi
  • Software Schnittstelle 1: RS 485 zum Wechselrichter

Die Zusammenhänge und Kommunikationsprotokolle der einzelnen Komponenten des Solarspeichers sind in der Abbildung "Systemkomponenten und deren Schnittstellen" in Abschnitt "Detaillierter Systemaufbau" zu erkennen. Das Arduinoboard sitzt in einem Kunststoffgehäuse direkt unter der sogenannten Arduinoplatine und ist mit allen Pins mit dieser verbunden. Auf der Arduinoplatine sitzen die Pegelwandler (MAX 485) für die Kommunikation mit Wechselrichter (Senden) und Modbuszähler (Empfangen), RJ45 Buchsen für den Anschluss des Wechselrichters sowie des Modbuszählers per Cat5 Kabel, die Erzeugung einer Konstantspannung für die Logik auf der Mosfetplatine, der Sicherungshalter zur Absicherung des Spannungsteilers zur Batteriespannungsmessung, ein R-C Glied für die Glättung des Steuersignals des Heizstabes, ein Reset Taster sowie ein Analog-Digitalwandler für vier analogen Eingänge. In folgender Abbildung ist das Platinenlayout mit den entsprechenden Platinenschnittstellen dargestellt.

Die Klemmen Stromversorgung DC (5V) und Eingang Stromsensor werden derzeit nicht benutzt und stammen noch aus einer früheren Projektphase. Der Schaltplan sowie das Boardlayout sind hier als .zip downloadbar File:Arduino und Mosfetplatine Eagle Files.zip.

Mosfetplatine

Die Aufgabe der Mosfetplatine besteht darin große Stromverbraucher wie die angeschlossenen Wechselrichter sowie den Schaltschranklüfter und die Heizstabansteuerung, gesteuert über das Arduinoboard, an- und auszuschalten. Die Platine ist für einen maximalen Stromfluss von maximal 11A bei 33V für die Versorgung der Wechselrichter ausgelegt. Jeweils zwei Mosfets (IRL1404-Z; Leistungs-MOSFET N-Ch TO-220AB 40V 160A) schalten parallel einen Ausgang. Die maximale Strombelastbarkeit eines Mosfets beträgt 75A (sofern 17W Abwärme zuverlässig abgeführt werden können --> auf der Mosfetplatine ist dies nicht vorgesehen). Die Leistungsansteuerung der Wechselrichter ist so programmiert, dass die Mosfets wenn möglich nicht unter Last trennen. Vier LED’s zeigen optisch den jeweils aktuellen Schaltzustand der Mosfets an. Über zwei Potentiometer und einer logischen Schaltung ist eine Hardwareabschaltung für die Vermeidung der Überladung bzw. Tiefentladung vorgesehen. Es kann somit die Hysterese des An- und Ausschaltens der Mosfets eingestellt werden. Diese logische Schaltung (Komparator, Fliflop, And) benötigt eine Konstantspannung, die, neben der normalen Betriebsspannung von 5V über ein Flachbandkabel vom Arduino Board der Mosfetplatine zur Verfügung gestellt wird. Dieser hardwareseitige Tiefentladeschutz (und zusätzlich der Überladeschutz) wird derzeit primär vom BMS Controller- bzw. Leistungsboard übernommen. Die Hardwareabschaltung auf der Mosfetplatine kommt aus einer früheren Projektphase ohne Batteriemanagementsystem und dient nun als sogenannte zweite hardwareseitige Hintersicherung des Tiefentladeschutzes. In folgender Abbildung ist das Platinenlayout mit den entsprechenden Platinenschnittstellen dargestellt.

Der Schaltplan sowie das Boardlayout sind hier als .zip downloadbar File:Arduino und Mosfetplatine Eagle Files.zip. Arduino- und Mosfetplatine haben eine Kantenlänge von 110 mm x 110mm und wurden bei Platinenbelichter incl. Bohrungen für jeweils 22€ hergestellt. Die Bestückung erfolgte von Hand. Die Materialkosten incl. Bauteile belaufen sich pro Platine incl. Platinenherstellung auf 70€. Die Platinen wurden an das Gehäuse Bopla ET-217, 122x120x55 angepasst, sodass an allen vier Ecken die Platine ausgespart werden muss. Platinenbelichter konnte diese Aussparungen nicht selbst herstellen. Die Platine wird mit vier Abstandsbolzen und M3 Schräubchen im Gehäuse befestigt. An das Gehäuse wird zur Hutschienenbefestigung mithilfe metrischer Schrauben und Muttern zwei Hutschienenhalter BOPLA TSH 35 befestigt. Die notwendigen Einzelteile sind in der Exceltabelle „PV_Berechnung_Energiespeicher“ (siehe Kapitel "Berechnung, Simulation, Auslegung, Kostenberechnung, Optimierung" in dieser Doku) im Registerblatt „Kosten Arduino- und Mosfetplatine“ im Detail einzusehen.

Strom-, Spannungsversorgung

Die Mosfetplatine bezieht die Versorgungsspannung über ein Flachbandkabel direkt von der Arduinoplatine. Die Arduinoplatine wiederum kann entweder direkt mit 7,5 V Gleichspannung versorgt werden oder wird per USB Kabel mit dem Raspberry Pi verbunden und erhält darüber seine Stromversorgung. Letztere Variante entspricht dem vorliegenden Schaltschrankaufbau. Das Raspberry Pi wiederum wird über ein Hutschienennetzteil versorgt.

Prototyp 3
Solar-Storage-Controller (Hauptplatine)

Um einen kostengünstigeren und einfacheren Aufbau des Solarspeichers zu ermöglichen werden die bisherigen drei Einzelplatinen Arduinoplatine, Mosfetplatine und Switch-N-Sense Platine (SNS Platine siehe 24-48V) auf einer großen Hauptplatine (Solar-Storage-Controller) vereinigt. Einige Hardwaremodifikationen und Hardwareerweiterungen die sich während des Betriebes des 2. Prototypen ergeben haben sind eingearbeitet. Steuer- und Regelungseinheit ist nach wie vor das Arduino Mega, in diesem Fall das MEGA2560PRO-EMBED, das auf die Solar-Storage-Controller PCB aufgesteckt wird. Der Solar-Storage-Controller ist mit 24V- 48V Systemen kompatibel und ermöglicht es nun auch (Batterie-) Miniwechselrichter von AE Conversion mit einer Leistung von 500W anzuschließen. Dies war bisher aufgrund der geringeren Systemspannung des 9-zelligen Akkumulators (32 V) nicht möglich. Der Solar-Storage-Controller hat folgende Abmaße: Breite = 242 mm, Höhe = 122 mm und wird in einem Hutschienengehäuse von Bopla untergebracht: Typ:

  • Strangprofil CRP 122 Sonderprofillänge 226,0 mm
  • CR 122-KS (Set Seitenelemente),
  • CRPM 73/63-220-E (Modulabdeckung),
  • CRM 73/63 mm (Modulkappensatz),
  • CR-LF2 (LP Fixierung)

An den Solar-Storage-Controller werden alle wesentlichen Anschlüsse der Subkomponenten im Schaltschrank mittels genormter Steckverbinder oder Kabelklemmen angeschlossen. Die Verkabelung innerhalb des Schaltschrankes soll dadurch vereinfach werden. Eine Übersicht über alle Anschlussklemmen gibt folgende Abbildung:

Im Einzelnen können an den Solar-Storage-Controller folgende Sub-Komponenten angeschlossen werden (von oben links im Uhrzeigersinn):

  • Anschluss Modbus 3-Phasenzähler über RJ 45 Stecker oder Anschluss der Modbus / SML PCB (s.d.). Diese Subkomponenten sitzen in der Regel im Hausverteilschrank. Buchse: RJ45
  • Anschluss Modbus 1-Phasenzähler für die Messung der Einspeisung des Solarspeichers ins Hausnetz. Buchse: Wago THT Stiftleiste 733-362
  • Anschlussmöglichkeit für ein Display (über I2C) und einem Rotary Encoder an den „interrupt pins“ des Arduinos. Hierdurch wird es möglich eine menügestützte Benutzerbedienung in den Solarspeicher zu implementieren. Buchse: Multicomp Box_header_connector_4x2
  • Serieller Anschluss für das Datenkabel vom BMS. Trennung beider Seiten über einen elektronischen Isolator (Dual-Channel Digital Isolators ADuM1200) um Störströme zu vermeiden. Buchse: Multicomp Box_header_connector_5x2
  • Anschlussmöglichkeit eines (z.b: OLED) Displays zur Anzeige wesentlicher Parameter der BMS Tätigkeit (Daten sind auch über den vzlogger einzusehen). Buchse: Wago THT-Stiftleiste733-364
  • Anschluss der Wechselrichter über ihre serielle Schnittstelle z.B. mit der der vorhandenen RJ45 Buchse umgesetzt im Arduino als softwareseitige Schnittstelle (software serial).Buchse: RJ45
  • Datenverbindung vom BMS zur Ansteuerung der Akkumulatorschutzfunktionen (SNS) (Tiefentladeschutz, Überladeschutz). Buchse: Multicomp Box_header_connector_4x2
  • Anschluss der Batterieausgänge der verwendeten Laderegler. Klemme: Wago 2606-1104 (6 – 10mm^2)
  • Anschlussmöglichkeit eines Heizstabes (geregelt über Heizstabregelmodul) (max. 70 A) Klemme: Wago 2616-1102 (16-25mm^2)
  • Anschluss von Verbraucher / Wechselrichter 1: Klemme Wago 2606-1102 (6-10 mm^2)
  • Anschluss von Verbraucher / Wechselrichter 2: Klemme Wago 2606-1102 (6-10 mm^2)
  • Anschluss von Verbraucher / Wechselrichter 3: Klemme Wago 2606-1102 (6-10 mm^2)
  • Anschluss eines Kleinverbrauchers (z.B. Schaltschranklüfter): Buchse: Wago THT Stiftleiste 733-362
  • Anschluss des Akkumulators: Klemme: Wago 2616-1102 (16 – 25 mm^2)
  • Stromversorgung des Arduino und Datenverbindung per USB vom Raspberry. Buchse: USB-B
  • Anschlussmöglichkeit für einen oder mehrere Temperatursensoren (LM35). Buchse: Wago THT Stiftleiste 733-364
  • Anschlussmöglichkeit von Taster oder Schalter gegen GND, um eine Aktion im Arduinocode auszulösen. Buchse: Wago THT Stiftleiste 733-364
  • Anschlussmöglichkeit des Heizstabregelmoduls „PWM Controller“. Buchse: Wago THT Stiftleiste 733-365
  • Serieller Anschluss an Laderegler 2 (bidirektionale Kommunikation möglich). Trennung beider Seiten über einen elektronischen Isolator (Dual-Channel Digital Isolators ADuM1200) um Störströme zu vermeiden. Buchse: Wago THT Stiftleiste 733-364
  • Serieller Anschluss an Laderegler 1 (bidirektionale Kommunikation möglich). Trennung beider Seiten über einen elektronischen Isolator (Dual-Channel Digital Isolators ADuM1200) um Störströme zu vermeiden. Buchse: Wago THT Stiftleiste 733-364
  • Anschlussmöglichkeit an diverse Reservepins. Buchse: Multicomp Box_header_connector_5x2

Alle relevanten Daten zum Bau des Solar-Storage-Controller incl. Stückliste der elektronischen Bauteile findet sich in folgendem Repo: gitlab.opensourceecology.de/

Hergestellt wurde die PCB des Solar-Storage-Controller ohne Bestückung über RP Engineering in Esslingen bei JLCPCB in China. Es ist eine 2-lagige Platine (Top, Bottom) mit 2 oz Kupferschichtdicke (70 µm) und einem gold finish (Frühjahr 2021: Netto 83€/5 Stck). Die Kupferschichtdicke von 2 oz ist notwendig, um im Leistungsteil die hohen Ströme ohne zu großen Verluste weiterleiten zu können. Theoretisch sind mit 2 oz Dicke bei 20mm Leiterbahndicke und einer Temperaturerhöhung von 30K ca. 56A möglich. Praktische Grenze bilden aber die parallel angeordneten Mosfets IRFS7730 die sich im Betrieb erwärmen und im Zweifel bei zu hohen Strömen durchbrennen. Ab wann und in welchem Maße diese Erwärmung stattfindet muss in der Praxis noch untersucht werden (z.B. bei Heizstabbetrieb unter Dauerlast).

Quellcode Arduinoboard

Um über die serielle Schnittstelle zwischen BMS und Arduino-Board im Binärprotokoll (siehe "Systemkomponenten und deren Schnittstellen" im Abschnitt "Detaillierter Systemaufbau") im Intervall von (0,25sec - 1sec) alle relevanten Daten ohne Datenverlust übertragen zu können, ist es derzeit noch notwendig im Arduino den seriellen Puffer für den Dateneingang (Receive)zu vergrößern. Dies geschieht durch Änderung der Variable SERIAL_RX_BUFFER_SIZE von 64 auf 128 (byte) in einem beliebigen Texteditor (z.B. Notepad++, gesamte RAM-Speichergröße des Arduino Mega beträgt 8kB). Der zusätzliche Speicher für die vier Schnittstellen wird vom Gesamtspeicher abgezogen. Eine Anleitung ist unter folgendem Link zu finden:
[8]
Je nach Installation ist die Datei „HardwareSerial.h“ auch unter folgendem Verzeichnis zu finden:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino
oder
C:\Users\Thomas\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino
oder wenn der Arduinocode über das Raspberry geflasht wird wie unter Abschnitt [9] Arduino komfortabel über das Raspberry Pi flashen beschrieben, muss die Anpassung des seriellen Puffers in folgender Datei erfolgen im versteckten Dateipfad:
/home/pi/.arduino15/packages/arduino/hardware/avr/1.8.3/cores/arduino/HardwareSerial.h
Also dort wo ursprünglich das Paket "arduino-cli" für das flashen des Arduinos über das Raspberry installiert wurde. VORSICHT: Die Änderung des seriellen Puffers wirkt sich global auf die Kompilierungssoftware Arduino aus und somit auf jedes kompilierte Projekt.

Der Quellcode für das Arduinoboard ist in der gleichnamigen und frei zur Verfügung stehenden Programmierumgebung Arduino geschrieben und ist derzeit strukturiert in verschiedene Programmteile, deren Funktionen in der folgenden Tabelle beschrieben sind. Der aktuelle Arduinoquellcode ist unter folgendem Link abrufbar gitlab.opensourceecology.de/

Tabname Funktionsname Beschreibung
Hauptprogramm Void setup()
  • Definition globaler Variablen.
  • Definition aller verwendenten hardware und softwareseitigen Schnittstellen und Pins
ADS1115 void ADS1115()
  • Auslesen des A/D Wandlers ADS1115 für Akkumulatorspannung, Schaltschranktemperatur und Boilertemperatur
BMS void BMS_logging()
  • Auswerten der empfangenen Daten vom BMS und Übergabe an Variablen zur weiteren Verwendung im Gesamtcode
BMS void serialEvent_BMS()
  • Empfangen der Daten vom BMS aus dem Puffer der Schnittstelle. Vollständig empfangene Zeilen sind mit einer /n (newline) getrennt
Batterie void battState()
  • Definition der Ein- und Ausschaltschwellen für diverse Verbraucher wie Wechselrichter, Heizstab, Schaltschranklüfter, Mosfetplatine
Heizstab void Heizstab()
  • Ein- und Ausschaltkriterium Regelgröße
Heizstab void Heizstab_control()
  • Regelroutine für Heizstab in Abhängigkeit des Ladestromes des Akkumulators
LR (Laderegler) void serialEvent_LR()
  • Empfangen der Daten vom Laderegler aus dem Puffer der Schnittstelle. Vollständig empfangene Zeilen sind mit einer /n (newline) getrennt
Modbus boolean modbus()
  • Empfangen der Daten von den Modbuszählern aus dem Puffer der Schnittstelle. Routine wird erst ausgeführt, wenn ein vollständiger Datensatz im Puffer vorhanden ist.
Modbus uint32_t byte_to_uint32(byte byteArray(), byte pos)
  • Variablenumwandlung von byte in Integer
Modbus float byte_to_float(byte byteArray(), byte pos)
  • Variablenumwandlung von byte in float
Output void send_raspberry()
  • Ausgabe aller Daten über die Schnittstelle, die im Raspberry zum Loggen oder zum Darstellen im UI von Node Red erscheinen sollen
Updates -
  • Möglichkeit der Dokumnetation neuer Codeänderungen
WR (Wechselrichter) void calcPower()
  • Ständige Neuberechnung des Wechselrichtersollwertes in Abhängigkeit des Systemstatus (Tag oder Nachtbetrieb, geregelte Einspeisung oder Volleinspeisung
WR (Wechselrichter) void sendPowerAESGI4(int P_WR_temp)
  • Senden der Daten zur Leistungsreduktion an den Wechselrichter umgerechnet in Stromstärke
WR (Wechselrichter) Loop
  • Systematischer Aufruf der obigen Funktionen in den jeweiligen Tabs des Programmiercodes

Raspberry Pi

Das Raspberry Pi besitzt die Aufgabe alle relevanten Parameter und Messwerte des Systems zu loggen, auf einer SD Karte zu sichern und über das Volkszähler Frontend auszugeben. Eine regelmäßige Sicherheitskopie der Datenbank erfolgt auf einen USB Stick. Weiterhin stellt das Raspberry Pi Informationen für das Node-Red User Interface (UI) bereit und übernimmt die Steuerung der über Wlan steuerbaren Home Automationsaufgaben wie z.B. schaltbare Steckdosen uvm. Weiterhin ist das Raspberry für die Fehlerauswertung des Gesamtsystems zuständig und informiert den Besitzer z.B. per Mail oder Twitter über dessen Status. Das Raspberry Pi wird zur Hutschienenmontage in folgendem Gehäuse untergebracht: (Voelkner: RASPBERRY HUTSCHIENEN-GEH RASPB B+2B3B.[1]

Manueller Reset/Neustart des Raspberry Pi‘s

Um für Wartungszwecke das Gesamtsystem schnell ausschalten bzw. herunterfahren und neu starten zu können werden in das Gehäuse des Raspberry Pi's zwei Schalter installiert (Herunterfahren/OFF und Reset/ON). Das dazu notwendige Platinenlayout ist unter folgendem Link verfügbar: [10] Nachfolgend dargestellt ist der Schaltplan mit den erwähnten zwei Tastern S1 (Herunterfahren/OFF) und S2 (reset/ON).

Der Reset-Taster S2 löst einen harten Reset des BCM 2835 aus. Weiterhin ist es möglich mit diesem Reset-Taster das Raspberry nach dem herunterfahren wieder aufzuwecken. Der Resettaster verbindet im Falle des Resets beim Raspberry 3 GND mit RUN. Je nach Raspberryversion sind diese zwei direkt nebeneinander angeordneten Pins an anderer Stelle auf der Platine verortet. Ein direktes Verbinden der Pins führt zu einem sofortigen Reset bzw. Anschalten des Raspberry Pis. In der Regel muss zur Benutzung dieser Pins eine Zweierpinleiste eingelötet werden. Um das Herunterfahren (bzw. ebenfalls Neustart) des Raspberrys zu initiieren, wird der PIN GPIO4 mit dem Taster S1 über den Widerstand R2 330Ohm auf Masse gezogen. Ist der Taster geöffnet liegt an GPIO 4 ein "High" Signal an. Damit das Raspberry den Pin GPIO 4 kontinuierlich überwacht, wird ein zusätzliches Python-Skript benötigt. Erstellung und Installation sind unter folgendem Link erklärt:
[11]
Wird Schalter S1 (Herunterfahren/OFF) für mindestens 0,5 Sekunden und kürzer als 3 Sekunden gedrückt, initiiert das Python-Skript einen Neustart des Systems. Wird Schalter S1 jedoch für mehr als 3 Sekunden betätigt, fährt das System herunter und kann anschließend von der Stromversorgung getrennt oder über den Reset Button wieder aufgeweckt werden. Da das Raspberry Pi über das USB Kabel die Haupsteuereinheit (Arduino Board) mit Strom versorgt wird, wird dieses dann ebenfalls ausgeschalten.

Auswahl sd Karte

Die Anzahl der Schreibvorgänge auf der sd Karte wird bestimmt über die Anzahl der geloggten Kanäle (Systemparameter) sowie über das eingestellte Log-Intervall im volkszähler. Es hat sich herausgestellt, dass handelsübliche (Consumer) Micro-SD Karten, die direkt in das Raspberry eingesteckt werden zum Teil schon nach kürzester Zeit völlig unbrauchbar werden und ohne Backup sämtliche Logdaten verloren sind. Im industriellen Bereich werden spezielle SD Karten verwendet, die deutlich robuster gegen häufige Schreibzugriffe und äußere Umwelteinflüsse sind. Diese industriellen SD Karten (industrial grade) werden eingeteilt in die MLC- (Multi-Level Cell) und die SLC (Single-Level Cell) Technologie. Detaillierte Infos sind zu finden unter: https://www.elektronikpraxis.vogel.de/zehn-gruende-die-fuer-industrie-sd-karten-sprechen-a-284360/

Vorteile der industriellen SD Karten im Schnellüberblick:

  • hohe Zuverlässigkeit und Langlebigkeit
  • Schreibzyklen von 100.000 (SLC Flash) und für MLC-Flash (10.000) statt 200-300 in neueren SD Karten für Consumer-Anwendungen
  • aufwändige Fehlerkorrekturalgorithmen (z.B. Hamming Code) um Lese- bzw. Schreibfehlern vorzubeugen
  • gleichmäßige Verteilung der Schreibzugriffe auf alle Flash-Zellen durch das Wear-Leveling Verfahren.
  • Sicherer Schutz bei Stromausfall durch markieren fehlerhafter Sektoren
  • Rundum verschweißtes Gehäuse lässt SD Karte unempfindlich gegen äußere Spannungseinflüsse werden
  • Vergrößerte Mechanische Stabilität
  • Extra dicke und stabile Goldauflage auf Kontakten zur Erhöhung der Kontaktsicherheit und Lebensdauer

Im Projekt wurde folgende SD Karte eingesetzt: Transcend micro SDHC Card C10 Industrial 16GB für 30€ incl. Versand und MwSt.

Betriebssysteminstallation

Auf [12] wird ein Image für den Raspberry Pi angeboten, das die vollständige Betriebssysteminstallation incl. Volkszählersoftware enthält. Installation und Einrichtung sind unter folgendem Link beschrieben [13].
Folgende Skripte müssen nach der Betriebssysteminstallation noch manuell hinzugefügt werden:

Wpa_supplicant.conf

Dieses Skript beinhaltet alle Informationen über das Netzwerk, in das sich das Wlan des Raspberrys einwählen soll.

  1. Ausführbare Datei anlegen unter /etc/wpa_supplicant/ oder im Boot Verzeichnis der Linux Installation
  2. Folgender Dateiinhalt in einer Datei namens Wpa_supplicant mit der Endung .conf ablegen. Dabei unter dem Platzhalter >xxx< die jeweiligen Wlan Logindaten eintragen:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid=">xxx<"
    psk=">xxx<"
    key_mgmt=>xxx<
}

network={
    ssid=">xxx<"
    psk=">xxx<"
    key_mgmt=>xxx<
}

3. Beim nächsten Neustart des Raspberry Pi's wird das Skript ausgeführt

Vzlogger.conf

Mit diesem Skript wird die Verknüpfung zwischen der eindeutigen UUID eines Kanals und den eingehenden Daten der seriellen Schnittstelle hergestellt. (Ausführliche Erklärung siehe Abschnitt „Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf“ unter 24-48V BMS

Push-server.service

Dieses Skript aktiviert den sogenannten push-Server (siehe Abschnitt „Starten des vzloggers über WinSCP“ unter 24-48V BMS bzw. unter [14]). Die Datei ist hier abrufbar: File:push-server.zip

Shutdownbutton.py

Siehe Abschnitt "Manueller Reset/Neustart des Raspberry Pi’s" in dieser Dokumentation. Die Datei ist hier abrufbar: File:shutdownbutton.zip

Vzsqlbackup.sh

Dieses Skript legt eine wöchentliche Sicherung der einige hundert MB großen Volkszähler-Datenbank mit Speicherdatum auf einem USB Stick an. Insgesamt bleiben immer die zwei älteren abgespeicherten Datenbankspeicherstände erhalten. Alle Älteren werden gelöscht. Das Skript vzsqlbackup.sh wird wöchentlich automatisch ausgeführt, angestoßen von folgendem Befehl, der in der, auf einer Linuxinstallation existierenden Datei Crontab, angelegt werden muss. Hierfür wird die Eingabeaufforderung unter WinSCP gestartet, um per Kommandozeile über Menü --> Befehle --> „In PuTTY öffnen“ folgendes einzutippen: (siehe auch Beschreibung unter 24-48V_BMS BMS Doku Unterkapitel “ Starten des vzloggers über WinSCP„ :

# crontab von root öffnen
sudo crontab -e							
# Folgende Zeile am Ende eintragen:
# jeden Sonntag um 22Uhr wird ein Backup erzeugt
00 22 * * 0 /usr/local/bin/raspiBackup.sh

Zum Erstellen des Skripts vzsqlbackup.sh wird zuerst eine leere, mit root Rechten ausführbare Datei angelegt (siehe hierzu:[[15]]), die unter einem der folgenden Links abgespeichert sein muss:

  1. System-Scripte mit Root-Rechten: "/usr/local/sbin"
  2. Allgemeine User-Scripte mit Benutzer-Rechten: "/usr/local/bin"

Folgender Inhalt wird im Skript niedergeschrieben.

#USB Stick mounten
mount /dev/sda1 /mnt/stick

#Backupdatei anlegen und abspeichern
mysqldump volkszaehler > /mnt/stick/pi/mysqlvzbackup-$(date +%Y%m%d-%H%M%S).sql

#älteste Datei im Verzeichnis löschen
ls -tr /mnt/stick/pi/mysqlvzbackup* | head -n -2 | xargs rm -v

#Ende Skript
exit 0
Datenübergabe Arduinoboard zu Raspberry Pi

Zum Einrichten der Kanäle im Raspberry Pi siehe Abschntt Vzlogger.conf. Folgende Kanäle werden derzeit vom Arduinoboard an das Raspberry übergeben:

  • Batterie Spannung von Laderegler 1
  • Energieerzeugung Laderegler 1 + 2
  • Leistung Laderegler 1 + 2
  • Summe Leistung Laderegler 1 + 2
  • Ladestrom Laderegler 1 + 2
  • Summe Energieerzeugung Laderegler 1+2
  • Summe Ladestrom Laderegler 1 + 2
  • Ladestatus Laderegler 1 + 2
  • Errorstatus Laderegler 1 + 2
  • Vorgabewert Heizstabansteuerung
  • Saldierte Leistung Zweirichtungszähler
  • Leistungsbezug Zweirichtungszähler
  • Leistungseinspeisung Zweirichtungszähler
  • Erzeugungsleistung PV
  • Einspeiseleistung PV
  • Temperatur Schaltschrank
  • Temperatur Boiler
  • Sollwert Leistung Wechselrichter
  • Sollwert Stromaufnahme Wechselrichter
  • Balancing Status
  • SoC (State of Charge)
  • Batteriespannung
  • Lade-/Entladestrom
  • Temperatur Batterie 1 + 2
  • Zellspannung 1 - 9
Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf"

Das Einrichten von Kanälen im „web Frontend“ sowie in der Konfigurationsdatei „vzlogger.conf“, die Bedienung des Web Frontends, das Starten des „vzloggers über WinSCP und letztendlich den Export von Datenbanksätzen ist ausführlich beschrieben unter der Dokumentation 24-48V_BMS im Kapitel 5.

Übertragungsgeschwindigkeit der seriellen Schnittstelle zwischen Arduino und Raspberry

Um die Übertragungsgeschwindigkeit der seriellen Schnittstelle zwischen Arduino und Raspberry zu erhöhen (Standard 9600) bzw. an den derzeitigen Arduinocode anzupassen (115200) muss folgende Zeile in der vzlogger.conf nach der Zeile "device" eingefügt werden:

"device": "/dev/ttyACM0",
"baudrate": 115200,
            "aggtime": 30,
Arduino komfortabel über das Raspberry Pi flashen

Um einen neuen Arduinocode komfortabel direkt vom Raspberry Pi auf das Arduino zu flashen, sind folgende Schritte zu befolgen:
1. Um den Vz logger zu stoppen, folgende Zeile in das Eingabefenster (putty) in WinSCP eingeben:

sudo systemctl stop vzlogger

2. Navigiere in das “home” Verzeichnis und liste alle vorhandenen Ordner auf:

ls

3. Ins Unterverzeichnis „Arduino“ wechseln (change directory):

cd Arduino

4. Code kompilieren mit richtigem Dateinamen (in diesem Falle "PV-System_20190629"):

arduino-cli compile --fqbn arduino:avr:mega PV-System_20190629

5. Treten Probleme beim Kompilieren auf, so fehlen in der Regel dem Raspberry Arduinobibliotheken. Diese sind nach folgender Anleitung zu installieren: arduino-cli_lib_install/

6. Code auf Arduino flashen mit richtigem Dateinamen (in diesem Falle "PV-System_20190629"):

arduino-cli upload --fqbn arduino:avr:mega --port /dev/ttyACM0 PV-System_20190629

6.1 Speziell fürs Arduino Mega 2560 Pro (Embed)

arduino-cli upload -p /dev/ttyUSB0 --fqbn arduino:avr:mega PV-System_20190629

7. vz-logger starten

sudo systemctl start vzlogger

Eine ausführliche Anleitung zur Installation der benötigten Pakete ist unter folgendem Link zu finden [16]

Einrichtung Node-Red

Die freie Entwicklungsumgebung Node-Red bietet über eine grafische Oberfläche die Möglichkeit Anwendungsfälle im Bereich Internet der Dinge (Internet of Things, IoT) intuitiv im Baukastensystem per drag&drop umzusetzen. Die einzelnen Bausteine werden durch das Ziehen von Verbindungen verbunden. Der Quellcode ist im JavaScript geschrieben. Über Benutzerdefinierte Bausteine, die ebenfalls mit JavaScript gefüllt werden können, besteht somit die Möglichkeit den individuellen Anforderungen gerecht zu werden. Weiterhin besteht die Möglichkeit über ein Webinterface Daten in unterschiedlichster Weise übersichtlich darzustellen, um bspw. dem Solarspeicherbesitzer einen schnellen Überblick über Ladezustand, Spannungsniveau, Ladestrom und Fehlermeldungen zu geben. Über die Exportfunktion können komplette Flows exportiert und in neuen Projekten funktionsfähig importiert werden. Im vorliegenden Projekt wird Node-Red für folgende Funktionen verwendet:

  1. Abgriff der Push-Daten von volkszähler zur Darstellung im Webinterface:
    • Ladestrom
    • Akkuspannung
    • Error-Code
    • Ladezustand Akkumulator
    • Aktuelle Stromerzeugung
    • Aktueller Stromverbrauch
    • Zellbalancing
    • Heizstabbetrieb
    • Heizstableistung
    • Boilertemperatur
  2. Mailversand an Solarspeicherbesitzer bei Error
  3. Berechnung der eingesparten CO2 Menge
  4. Wetterbericht für den aktuellen und die nächsten zwei Tage
  5. Berechnung der eingespeisten und verbrauchten Energie (Erzeugung, Verbrauch) für den aktuellen und die letzten zwei Tage
  6. Ansteuerung der Funksteckdose (wahlweise manuelle Bedienung, automatische Anschaltung bis Tagesende bei Stromüberschuss, automatische Anschaltung nur explizit bei Stromüberschuss

Node-Red ist über einen beliebigen Browser über das Wlannetz, in dem auch das Raspberry registriert ist, über folgenden Link (IP des verwendeten Raspberry = 192.168.1.2) erreichbar:
http://192.168.1.2:1880/
Wie im folgenden Abschnitt beschrieben, sollte die Programmierumgebung über ein Passwort vor unberechtigtem Zugriff geschützt sein. Das sogenannten Dashboard oder „UI – User Interface“ ist die optisch ansprechende Schnittstelle für den Nutzer, um die erfassten Datenströme zu visualisieren. Über verschiedene Zeiger, Balken, Schalter und Ausgaben ist es möglich sich eine professionelle Oberfläche zu gestalten. Der in diesem Projekt verwendete Flow besitzt die in folgender Abbildung dargestellte Oberfläche.

Das User Interface ist über folgenden Link zu erreichen
http://192.168.1.2:1880/ui/#/0
Im UI gibt es folgende Rubriken:

  1. Wlan-Steckdose
    Es kann über das Dropdownmenü zwischen drei verschiedenen Betriebsarten unterschieden werden:
    • Manuell: Manuelles Einschalten der Wlan gesteuerten Steckdose über den Schalter „switch“ im Dashboard
    • Takten: Die Steckdose wird automatisch angeschaltet (Verbraucher hinzugeschalten) zur Stromüberschussverwertung, so lange der Akkumulator voll ist. Fällt die Akkumulatorladung aus der Erhaltungsladung (Float) in die Ladung (Bulk) schält die Steckdose wieder aus.
    • Anbleiben: Die Steckdose wird automatisch angeschaltet (Verbraucher hinzugeschalten) zur Stromüberschussverwertung. Auch wenn der Solarertrag nachlassen und der Akkumulator dadurch entladen werden sollte, bleibt die Steckdose bis 17 Uhr angeschalten. Die Uhrzeit ist im Quellcode natürlich variabel.
  2. Akku
    • Anzeige SOC (State of Charge) Akkumulator
    • Anzeige Akkumulatorspannung
    • Anzeige Lade- und Entladestrom (Positiv und Negativ)
  3. Wechselrichter
    • Anzeige aktuelle Wechselrichterleistung
    • Anzeige letzter 20 min Wechselrichterleistung
    • Anzeige Modbusleistung
  4. Boiler
    • Anzeige Heizstableistung
    • Anzeige Boilertemperatur
  5. Fehlermeldungen
    • Ausgabe Fehlermeldungen Arduino
    • Ausgabe Fehlermeldungen BMS
    • Akku Balancing
    • Anzeige welche Zelle aktuelle gebalanct wird. Das Zellbalancing findet nur im geladenen Zustand des Akkumulator statt.
  6. Allgemein
    • Anzeige der seit Inbetriebnahme der Anlage eingesparte Co2 Menge
    • Schaltschranktemperatur
  7. Allgemein gestern / Allgemein heute
  8. Darstellung der wichtigsten Tagesdaten des laufenden und des vorhergehenden Tages wie:
    • Erzeugung WR in [kWh]
    • Erzeugung Laderegler (LR) [kWh]
    • Eingesparte Stromkosten [€]
    • Solare Deckung [%]
    • CO2 Einsparung [kg]
    • Gesamtstromverbrauch [kWh]
  9. Wettervorhersage morgen, übermorgen, überübermorgen
    • Anzeige einer Kurzwettervorhersage zur Einschätzung des Solarertrags der kommenden Tage

Der Flow befindet sich noch im Entwicklungsstadium, eine Zwischenstand steht hier zum Download bereit File:Nodered Flow.zip.

Eine überarbeitete Version ist hier verfügbar: File:20231128_flow.zip

Installation von Node-Red

Die folgende Installationsanleitung erfolgt in Anlehnung an das Youtube-Video „Node-Red Tutorial Part 1 Installation Haus Automatisierung“.[2] In der Regel ist auf dem Image der Linuxinstallation Raspian Strech Node-Red schon installiert, aber nicht in vollem Funtkionsumfang wie es hier benötigt wird. Deshalb muss zunächst ein Update der vorhandenen Programmpakete durchgeführt werden mit:

update-nodejs-and-nodered

Es erfolgt die Abfrage “Are you really sure to do this?” Mit „Yes“ bestätigen. Die Installation kann bis zu 20min dauern. Im Anschluss wird die installierte Version angezeigt und mittels Häckchen der Erfolg der Installation einzelner Komponenten angezeigt.

Um die Node-Red Oberfläche vor ungewolltem Zugriff zu schützen, wird nun noch der sogenannte "Node-Red-admin" installiert. Dies erfolgt global und nicht im Node-Red Verzeichnis:

sudo npm install -g node-red-admin

Um nun ein sicheres Passwort zu generieren wird folgender Befehl eingeben:

node-red-admin hash-pw

Nun wird ein beliebiges Passwort eingeben, das „gehasht“ werden soll. Den nun angezeigten Hash kopieren und wie folgt beschrieben in der „config“ eintragen.
Folgende Datei öffnen:

vi ~/.node-red/settings.js

Folgende Zeilen einkommentieren und den generierten Hashcode unter „password“ einfügen, sowie einen "username" vergeben.

Datei speichern mit folgendem Befehl

:wq

Nun muss noch der automatische Node Red Start bei Systemstart eingestellt werden mit:

sudo systemctl enable nodered.service

Ein Restart des Programms nach Installation durchführen:

sudo service restart

Ein Zugriff auf die Programmieroberfläche erfolgt über einen beliebigen Browser in der Eingabezeile über die IP des Raspberry Pi's (z.B. 192.168.1.2:1880). Um auf die Nutzeroberfläche zur professionellen Darstellung von Flowergebnissen (Dashboard) von Node-Red zu gelangen, wird dieses nun wie folgt installiert: Auf der Programmieroberfläche unter dem „Burgermenü“ rechts oben auf „Manage palette“ klicken, dann auf „install“ und in die Suche „dashboard“ eingeben. „Node-red-dashboard installieren“ klicken. Der Zugriff auf das Dashboard erfolgt über die IP des Raspberry Pi's (z.B. 192.168.1.2/ui).

Installation von MQTT bzw. des MQTT Brokers

Anleitung in Anlehnung an folgende Tutorials [3][4]
Zuerst muss das “Repository” mit folgenden zwei Befehlen hinzugefügt werden:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquito-repo.gpg.key

Nun das Verzeichnis wechseln:

cd /etc/apt/sources.list.d/

Die Pakete updaten:

sudo apt-get update

Nun wird die „mosquitto stretch list“ für verschiedene Pakete hinzugefügt:

sudo apt-get install mosquitto mosquitto-clients python-mosquitto

Tritt folgende Fehlermeldung auf, folgenden Workaround durchführen:

# Fehlermeldung: „Konnte nicht alle Pakete installieren, folgende Pakete haben unerfüllte Abhängigkeiten: mosquitto: Hängt ab von libwebsockets3 (>=1.2)ist aber nicht installierbar“

1. Zurück aus dem Verzeichnis /etc/apt/sources.list.d ins Grundverzeichnis wechseln über: cd
2. Manuelle Installation des fehlenden Paketes mit folgenden zwei Befehlen:

wget http://ftp.nz.debian.org/debian/pool/main/libw/libwebsockets/libwebsockets3_1.2.2-1_armhf.deb
sudo dpkg -I libwebsockets3_1.2.2-1_armhf.deb

3. Erneuter Installationsversuch von mosquitto durchführen:

sudo apt-get install mosquito mosquito-clients

4. Starten des MQTT Broker

sudo service mosquito start

In der Programmieroberfläche von Node-red kann nun der Node „mqtt“ auf die Oberfläche gezogen werden (vgl. hierzu auch Kapitel Funksteckdose). Ist das Node angeklickt, so erscheint wie in folgender Abbildung dargestellt, das folgende Fenster. Dort unter Server und Topic abgebildete Inhalte eintragen. Ein Klick auf den Stift hinter dem Eingabefeld Server führt zu dem abgebildeten Eingabefenster: Auch hier den Servernamen „localhost“ eintragen. Unter dem Register„Security“ müssen nun nochmals die oben erwähnten Anmeldedaten eingegeben werden. Abschluss der Einstellungen mit der Schaltfläche „Update“. Für weiterreichende Infos zur Ansteuerung einer Funksteckdose über das MQTT Protokoll siehe Abschnitt „Funksteckdose“.

Funksteckdose

Im vorliegenden Projekt wird die Wlan Steckdose Sonoff Tasmota S 20 Smart verwendet und über NodeRed auf dem Raspberry angesteuert. Diese Steckdose kommuniziert über das MQTT Protokoll mit dem Raspberry, das im Internet der Dinge weite Verbreitung gefunden hat. Vor Verwendung der Steckdose für die eigenen Zwecke muss die Firmware auf dem integrierten Chip ESP 8266 neu geflasht werden. Neuerdings ist es auch möglich einen Steckdosen-Schalter mit Tasmota auch fertig geflasht zu kaufen z.B. unter: [5]

Die theoretischen Grundlagen zur Wlan Steckdose sind unter folgenden Links zu finden:

  • Generelle Beschreibung der Sonoff Tasmota S20 Funksteckdose[6]

Unter Youtube sind folgende Tutorials zu empfehlen:

1. Sonoff Teil 4 - FHEM-Integration haus-automatisierung [7]
2. Sonoff Teil 17 - Die verfügbaren Befehle und die Konsole [8]

Weitere Infos zur Sonoff-Tasmota Steckdose sind unter Github zu finden:[9], [10]

Weitere Infos zum MQTT Protokoll sind unter folgenden Links zu finden:

1. Beschreibung des MQTT (Message Queue Telemetry Transport) Protokolls: [11] [12]
2. Funkkommunikation zwischen Raspberry Pi’s mittels MQTT Broker/Client: [13]

Um die Steckdose über das Raspberry selbst ansteuern zu können, muss die Firmware des IC’s ESP8266 geflasht werden. Eine Beschreibung und ein Wiki sind hierzu unter folgenden Links zu finden: [14] [15]

Das unter folgendem Link vorhandene Tutorial erklärt den Hardwareanschluss des IC’s ESP8266 zu flashen: [16]

Folgendes Tutorial beschreibt den Software-flash mit dem Esp-Tool:[17]

Voraussetzungen zum Flashen der Software der Sonoff Tasmota Funksteckdose sind:

  1. Youtube-Video: „NodeRed Tutorial Part 1 Installation Haus Automatisierung“[2]
  2. Installation von Node-Red und dem Node-Red Dashboard auf dem Raspberry (siehe Abschnitt Einrichtung Node-Red )
  3. NodeRed/UI vor fremden Zugriff schützen (siehe Abschnitt Einrichtung Node-Red )
  4. MQTT Client installieren durch Hinzufügen des mosquitto repository (siehe Abschnitt Einrichtung Node-Red )
  5. Wlan Steckdose einstecken
  6. Installation eines MQTT-Brokers auf dem Raspberry Pi (siehe Abschnitt Einrichtung Node-Red )

Sind alle oben genannten Voraussetzungen erfüllt, so ist die Weboberfläche der Steckdose über deren IP zugänglich. Um die richtige IP herauszufinden ist es ratsam diese nach Einstecken der WLAN Steckdose in den Routereinstellungen auszulesen.

Weboderfläche der Wlan Steckdose

In der Weboberfläche der Wlan-Steckdose gibt es unter "Main Menu" --> "Konsole" die Möglichkeit direkt Befehle an die Steckdose zu senden: Hier können alle Befehle aufgelistet in [18] direkt an die Steckdose gesendet werden und die Antwort direkt beobachtet werden. Z.B. „Power on“ –> Steckdose an; „Power off“ --> Steckdose aus. Der Pfad unter dem die Steckdose später über das MQTT Protokoll vom Raspberry aus erreichbar sein wird, kann selbst gewählt werden und ergibt sich aus der Hierarchiestruktur, die im eigenen Smarthome erwünscht ist. Hier im Beispiel soll die Steckdose die Schreibtischlampe an- und ausschalten. Die Steckdose ist erreichbar unter /SmartHome/Buero/Schreibtischlampe. Dabei bezeichnet man die Hierarchiestufe „Schreibtischlampe“ als „Topic“ und /cmd /stat /tele als „Prefix“. Siehe hierzu auch folgende Abbildung.

Je nachdem ob ein Befehl gesendet oder ein Response an der Steckdose ankommt, ist dann der Pfad entsprechend abgeändert zu …/tele oder …/stat oder …/cmd

Bsp.: In unserem Beispiel heißt das Topic „Schreibtischlampe“. Für die Konfiguration der Funksteckdose also im Feld „Topic“ „Schreibtischlampe“ eintragen. Der Pfad „full topic“ soll heißen:
/SmartHome/Buero/%topic%/%prefix%
Also folgende Einstellungen im Webinterface der Steckdose vornehmen:

Passend zu den Einstellungen in der Wlan Steckdose sind nun auch in Node Red einige Einstellungen vorzunehmen:

1. Zuerst Folgenden Flow mit zwei MQTT Nodes und einem Schalter (switch) aufbauen, der in diesem Beispiel den Namen Schreibtischlampe erhält. Das Dashboard ist erreichbar über die jeweilige IP es Raspberry Pi's 192.168.1.2:1880/

2. Im MQTT IN Node sowie im MQTT OUT Node folgende Einstellungen vornehmen:

3. Mit „Done“ und „deploy“ Eingaben bestätigen. Nun sollte die Funksteckdose beim Schalten des „Switch“ Nodes hörbar klacken und sich dabei an- und aus schalten.

Temperatursensoren

Die Temperaturmessung im Schaltschrank sowie am thermischen Speicher erfolgt mittels LM35 Temperatursensoren (Precision Centigrade Temperature Sensors). Diese analogen Sensoren sitzen im TO-92 Gehäuse, haben eine Temperaturgenauigkeit von +-0,5°C (±¼°C at room temperature and ±¾°C over a full −55°C to 150°C temperature range) und sind für einen Temperaturbereich von -55°C bis 150°C ausgelegt. Der LM 35 ist bei der Herstellung kalibriert in Grad Celsius. Die Ausgangsspannung ist direkt linear zur Temperatur ( Linear 10 mV/°C). In folgender Abbildung ist die Anschlusssituation aus dem Datenblatt erkennbar.

Der Temperatursensor wird mit +5V versorgt und kann direkt an einen digitalen Eingang des Arduino angeschlossen werden. Der LM35 in Form im TO-92 Gehäuse wird folgendermaßen fertig konfektioniert:

  • An die drei Beinchen Verlängerungskabel ansetzen und mit Schrumpfschlauch gegen Kurzschluss sichern
  • Den Temperaturfühler mit Anschlusskabel in eine leere Temperaturfühlerhülse (Durchmesser 6mm) schieben
  • Ggf. mit Isolierband/wasserdichtem Isolierband oder Silikon abdichten
  • Leitungsenden mit Kabelschuhen ausstatten

Heizstabregelmodul

Zur Überschussstromverwertung (bei Nichteinspeisung ins Netz) wird ein Heizstab integriert in den Hauswarmwasserspeicher installiert. Dieser Heizstab kann bei Bedarf modulierend bis zu 30A Überschussstrom in Wärme umsetzen. Hierfür wird eine eigens dafür konstruierte Platine mit Leistungsmosfets (parallel 3x SUP75N06) eingesetzt. Der Heizstab wird dabei per Pulsweitenmodulation (PWM) in seiner Leistung geregelt. So wird es möglich zu jedem Zeitpunkt genau den Strom in Wärme zu verwandeln, der nicht zur Ladung des Akkumulators oder zur Deckung des Stromverbrauches im Haushalt verwendet wird. Die Ansteuerung des Heizstabregelmoduls erfolgt direkt vom Arduino mit einem PWM Signal. Über einen High-Side Switch (parallel 3x BTS 442 D2) wird das Heizstabmodul an und ausgeschalten, um in Zeiten mit wenig Überschussstrom (Winterperiode) oder bei Gefahr des Überhitzens des Wasserspeichers den Heizstab komplett deaktivieren zu können. Um ein Überhitzen des Wasserspeichers zu vermeiden, wird die Wassertemperatur über einen Temperatursensors (LM 35 siehe Abschnitt „Temperatursensoren“) überwacht und ab 95°C der Heizstab deaktiviert. Weiterhin schützt der High-Side Switch die restliche Installation bei einem Schaden / Kurzschluss der Leistungsmosfets. Ein Schaltplan des Heizstabregelmoduls ist hier zu finden: File:Schaltplan Heizstabregelmodul.pdf. Das Heizstabregelmodul existiert bisher nur als Prototypenaufbau auf einer Lochrasterplatine wie in folgender Abbildung zu erkennen ist: Obere Platine: High Side Switch; untere Platine: Leistungsmosfets und Gate Driver zu deren Ansteuerung.

Anschluss Heizstabregelmodul

Der Leistungsanschluss der Platine vom Akkumulator ist über eine zweiadrige 6mm^2 Leitung ausgeführt. Die Daten und Signale werden über eine geschirmte Daten- und Steuerleitung 2x2 Adern (z.B. LIYCY TP 2X2X0,5) geführt. An dem Solar-Storage-Controller angeschlossen wird die Daten- und Steuerleitung über eine Wago THT Stiftleiste 733-365. Das Heizstabregelmodul sitzt im Keller unmittelbar neben dem Heizstab ca. 20m Kabelweg entfernt vom Solarspeicher. Die Leistungsmosfets auf dem Heizstabregelmodul werden sehr heiß und müssen aktiv mit einem kleinen PC Lüfter gekühlt werden, um ein Durchbrennen zu verhindern. Die passive Kühlung über den angebrachten Kühlkörper im kühlen Keller reicht nicht aus.

Die Spannungsversorgung des Temperatursensors LM 35 erfolgt momentan mit Batteriespannung (laut Datenblatt max. bis 30 V). Allerdings wird dann bei Deaktivierung des Heizstabregelmoduls über den High Side Switch auch der Temperatursensor deaktiviert und es gibt keine Temperaturmesswerte mehr im Volkszähler-Log. Der Solar-Storage-Controller verfügt im Aufbau des 3. Prototypen über eine eigene Spannungsversorgung des LM35 (Vorsicht: Somit benötigt man ein Datenkabel mit 5 Adern als Verbindung zwischen Solar-Storage-Controller und Heizstabregelmodul).

Um mit einem Arduino Mega ein PWM Signal über einen digitalen Pin in der gewollten Frequenz zu erzeugen sind hierzu im void setup() einige Einstellungen zu tätigen. Eine sehr gute Erklärung ist auf folgender Internetseite zu finden:[17]

Grundsätzlich haben am Arduino Mega 2560 12 Pins (Pin 2 bis Pin 13) die Möglichkeit ein PWM Signal auszugeben. Die Standardfrequenz liegt bei 490Hz. Angepasst wird timer 3, der die Pins 2, 3 und 5 kontrolliert. Genutzt wird im Arduinocode Pin 5, der nun auf 4000 Hz eingestellt ist (prescaler = 2),

Absicherungskonzept

Das System verfügt über mehrere Sicherungsautomaten bzw. Schmelzsicherungen. Wie auch im Verdrahtungsplan im Abschnitt "Aufbau des Systems" zu erkennen ist, wird der Akkumulator im Pluspolkabel mit einer 32A Neozyd Schmelzsicherung abgesichert. Ein Sicherungsautomat erwies sich als ungeeignet, da Rückkopplungen zwischen BMS und Sicherungsautomat ungewohnten Geräusche verursachten. Der Pluspol zur Heizstabplatine ist ebenfalls mit einer 32A Neozyd Schmelzsicherung ausgestattet. Weiterhin sind die PV Module über 16A Sicherungsautomaten abgesichert. AC seitig ist der Solar-Schaltschrank im Haushaltsschrank mit einem 16A Sicherungsautomat abgesichert. Weiterhin verfügen die Laderegler jeweils über eine 20A (Auto-)Schmelzsicherung. Bei Schaltschrankwartungen ist dafür zu sorgen, dass dieser über die Sicherungen sowohl AC als auch DC seitig spannungslos geschalten wird. Reihenfolge für Abschaltung der Anlage (Einschaltung erfolgt in umgekehrter Reihenfolge):

  1. Heizstabsicherung abschalten
  2. PV Module abschalten
  3. BMS ausschalten
  4. Raspberry ausschalten
  5. Akkumulatorsicherung ausschrauben
  6. AC seitige Sicherung im Haushaltschaltschrank abschalten

Stromzähler

Zur phasen- und richtungsweis korrekten Erfassung des Hausverbrauchs der Phasen L1 bis L3 werden SML Zähler oder Hutschienenmodbuszähler eingesetzt, die per HEX- oder Modbusprotokoll über ein CAT5 Kabel mit dem Arduino kommunizieren. Die erfassten Werte werden für die Regelstrategie des Wechselrichters benötigt. Während es bei modernen SML Zählern möglich ist über die IR-Schnittstelle und geeignetem Schreib-Lesekopf den Hausverbrauch direkt über ein HEX Protokoll auszulesen benötigt man bei älteren Zählermodellen einen zusätzlichen Hutschienenmodbuszähler. Die Solareinspeisung ins Hausnetz wird über einen 1-phasen Hutschienenmodbuszähler direkt im Solarspeicher erfasst.

Zweirichtungszähler für Hausverbrauch

Zur Erfassung des Hausverbrauches kommt bei Prototyp 2 folgender Zweirichtungszähler zum Einsatz:

Überschrift Überschrift
Modell Drehstromzähler für Hutschiene
Fabrikat DVH4013
Herstellerbezeichnung 4-Leiter Direktanschlußzähler für Wirkenergie
Klasse B
Spezifikation 3 x 230 / 400 V, 5 / 65 A
Messwerke +A, -A
Tarife 4
Sonstiges mit LCD-Display 7-stellig, mit MID-Konformitätszertifizierung
Bezug DZG Metering GmbH, Bezug als Geschäftskunde möglich

Der Einbau erfolgt durch eine autorisierte Elektrofachkraft in den Hausschaltschrank des jeweiligen Objektes direkt nach dem verplombten Eingangszähler des Netzbetreibers.

Anschluss Modbuskommunikation

Der Anschluss der Modbuskommunikation erfolgt an Klemme 22 auf die grün-weiße Ader eines CAT5 Kabels und an Klemme 23 auf die grüne Ader des CAT 5 Kabels.


Konfiguration Modbuskommunikation

Um die Register des Zählers über das Modbusprotokoll auszulesen sind im Arduinocode auf der Hauptregisterkarte die Registeranfragen "requests" hinterlegt. Es sollen die Register 1.7.0 für die Wirkleistung (gridPower), 1.8.0 für den Netzbezug (gridImport) als auch 2.8.0 für Netzeinspeisung (gridExport) ausgelesen werden. Die Wirkleistung wird im Arduinocode als Regelgröße verwendet. Netzbezug und Netzeinspeisung werden nur für das Datenlogging benötigt und direkt in die Volkszählerdatenbank auf dem Raspberry-Pi weitergereicht. Da bei diesen Registeranfragen aber sowohl die Modbuszählernummer als auch eine Checksumme in der Anfragesequenz steckt muss diese für jeden Modbuszähler neu zusammengestellt werden.

Bisherige Modbus requests:

   {0x39, 0x03, 0x00, 0x00, 0x00, 0x04, 0x40, 0xB1},                                       // 0 : Wirkleistung, gridPower (grid 1.7.0)[W]                            
   {0x39, 0x03, 0x40, 0x00, 0x00, 0x02, 0xD5, 0x73},                                       // 1 : Netz_Bezug, gridImport (grid 1.8.0) [kWh]
   {0x39, 0x03, 0x41, 0x00, 0x00, 0x02, 0xD4, 0x8F},                                       // 2 : Netz_Einspeisung, gridExport (grid 2.8.0) [kWh]

Vorgehensweise:

  • Gerätenummer des Modbuszählers auf dem Gehäuse abschreiben. Die letzten beiden Ziffern freistellen. Begreife diese Ziffern als Hexadezimale Zahl. Addiere 1 dazu. Beispiel: 0x38 sind die letzten beiden Ziffern auf der Gerätenummer.

Addiere Eins: 0x38 + 1 = 0x39. Oder im Dezimalsystem 56(dez) + 1 = 57(dez) = 0x39.

  • Ersetze das erste Byte im obigen Modbus Request mit der ermittelten Zahl.
  • Gehe auf folgende Internetseite zur automatischen Berechnung der neuen Checksumme (CRC): https://www.lammertbies.nl/comm/info/crc-calculation
  • Kopiere dir den Modbus Request ohne die letzten beiden Bytes und füge diesen in das Eingabefeld ein. Eingabe „Input type“ auf „Hex“ umstellen. Die neue Checksumme (CRC) kann nun in Zeile CRC-16 (Modbus) ausgelesen werden.
  • Diese neu ermittelten 2 Bytes in umgekehrter Reihenfolge an den Request anhängen.
  • Gehe für die anderen beiden Requests an den Modbuszähler in gleicher Weise vor und aktualisiere den Arduinocode.
Zähler für Solareinspeisung

Die Solareinspeisung des einphasigen Miniwechselrichters AE Conversion erfolgt über einen 16A Sicherungsautomat auf eine beliebige Phase im Hausschaltschrank. Folgender Einphaseneinrichtungszähler kommt zum Einsatz:

Überschrift Überschrift
Modell Einphasen-Stromzähler für Hutschiene
Fabrikat SDM120 Modbus
Spezifikation 5(45)A 230V
Sonstiges RS485 Modbus and pulse output,

Der Einbau erfolgt durch eine autorisierte Elektrofachkraft in den Hausschaltschrank des jeweiligen Objektes noch vor dem Sicherungsautomaten des Wechselrichters. Der Zähler ist so einzubauen, dass die Solareinspeisung im Menüpunkt 1-2 im dortigen Zählregister aufsummiert wird. Der elektrische Eigenverbrauch des Speichers (Raspberry Pi, Arduino Board) werden im Menüpunkt 1-1 im dortigen Zählregister aufsummiert. Folgende Einstellungen müssen im Menü durch den Drucktaster (3 sec drücken) einprogrammiert werden:

Überschrift Überschrift
Id 058
b (Baudrate) 9600
Prty (Parity) E (Even)

Anschluss Modbuskommunikation

Der Anschluss der Modbuskommunikation erfolgt an Klemme 9 auf die grün-weiße Ader eines CAT5 Kabels und an Klemme 10 auf die grüne Ader des CAT 5 Kabels. Beide Modbuszähler werden in Reihe miteinander verbunden. Hierzu dient bisher ein CAT 5 Adapter mit Minischraubklemmen, der in einem Gehäuse auf der Hutschiene befestigt werden kann.

Modbus / SML PCB

Die Modbus / SML PCB wird in den elektrischen Verteilerschrank des jeweiligen Haushalts, in dem auch der Eingangs-Stromzähler sitzt, auf eine Hutschiene aufgeclipt und ist in handelsübliche Schaltschrankabdeckungen integrierbar. Sinn und Zweck dieser Platine ist der komfortable und sichere Anschluss diverser Komponenten im Verteilerschrank. Die Modbus / SML PCB verfügt über folgende Anschlüsse: -

  • 1x Schraubklemmenpaar für Modbusanschluss (unterhalb der Schaltschrankabdeckung)
  • 1x RJ22 Anschluss für einen IR-Lesekopf (oberhalb der Schaltschrankabdeckung)
  • 1x RJ45 Anschluss für die Datenverbindung zum Solar-Storage-Controller / Solarspeicher (unterhalb der Schaltschrankabdeckung)

Ist kein digitaler Stromzähler im Verteilerschrank verfügbar, so kann für rund 80 € ein digitaler 3-Phasen Modbuszähler (z.B. DVH4013 bei DZG Metering AG) nachgerüstet werden, dessen Messwerte der Solar-Storage-Controller zur Regelung weiterverarbeitet. Dieser digitale 3-Phasen Modbuszähler kann dann an die Modbus / SML PCB (Schraubklemmen) angeschlossen werden.

Ist ein digitaler Zähler verfügbar so ist es oft möglich mithilfe eines magnetischen IR-Kopfes die Verbrauchsdaten auszulesen (z.B. über SML Code). Es existieren diverse Bausätze zum Nachbau aber auch kauffertige Produkte. Da der magnetische IR Kopf i.d.R. außerhalb der Schaltschrankabdeckung aufgelegt wird dieser mit einem RJ11 Stecker ausgestattet direkt von oben in das Gehäuse der Modbus / SML PCB eingesteckt werden. Die Verbindung zum Solar-Storage-Controller erfolgt über eine RS235 Verbindung. Modbus und SML Code werden abwechselnd vom Arduinocode ausgelesen und ausgewertet.

Der Schaltplan, Hardwarelayout (KiCAD) sowie Bestückungsübersichten der Modbus / SML PCB finden sich hier File:RS485-Modbus Satellitenboard.zip. Es wurde ein Gehäuse von Camdenboss CNMB/2/KIT gewählt.

Die RJ 11 Buchse Aliexpress wird in den clipbaren Deckel integriert, indem mit der Laubsäge ein entsprechendes Rechteck ausgesägt und Löcher für die Befestigungsschrauben geschaffen wird. Vier Kontakte des RJ11 Steckers werden auf der Modbus / SML PCB aufgelötet nach Zuordnung in nachfolgender Tabelle. An den IR Sensor wird ein Ringeltelefonkabel angelötet, das auf der anderen Seite einen RJ11 Stecker nach nachfolgender Tabelle aufgecrimpt bekommt. Details zum Bau des IR Sensors unter Abschnitt xy.

Zuordnung der Anschlüsse der RJ 11 Buchse auf der Modbus / SML PCB sowie Zuordnung der Anschlüsse für das Crimpen des RJ11 Steckers
RJ11 Buchse auf Modbus / SML PCB Aderfarben - Ringelkabel von IR Sensor mit RJ 11 Stecker
GND (gelb) schwarz
- weiß
Rx (IR) (grün) rot
Tx (IR) (rot) grün
- blau
5V (Braun) gelb

Da sich die SML Zähler im Detail im SML Protokoll unterscheiden sind je nach Zähler Modifikationen im Arduinocode vorzunehmen. Details siehe folgende Abschnitte.

IR Schreib- Lesekopf

Es existieren diverse Bausätze und Bauanleitungen im Internet sowie die Möglichkeit fertig zusammengebaute IR Schreib- Leseköpfe zu erwerben. Für die Auslesung des SML Smart Meters / SML Zählers über das Arduinoboard benötigen wir einen Lesekopf mit TTL Pegel Ausgang. Zum Debuggen und unkompliziertes Auslesen des SML Zählers empfiehlt sich zusätzlich einen Lesekopf mit USB Schnittstelle zu erwerben. Auslesung erfolgt dann komfortabel z.B. mithilfe des kostenlosen Programms Emlog – Testprogramm v.1.17 von Weidmüller Elektronik unter Weidmann-elektronik

Hier eine Übersicht:

  • TTL IR Schreib Lesekopf:

Bauanleitung: volkszaehler

Fertig aufgebaut: ebay

  • USB Leseköpfe: elv

TTL IR und USB Leseköpfe gibt es fertig aufgebaut direkt bei ardubel@web.de

siehe hierzu folgende Links in das PV-Forum:

TTL: Photovoltaikforum USB: Photovoltaikforum

Der im Projekt verwendete Lesekopf ist nach folgender Anleitung aufgebaut: Volkszaehler.org In folgender Abbildung ist dieser dargestellt.

Aufgrund der Umschaltung mithilfe der Modbus – SML PCB zwischen bidirektionalem Modbus und unidirektional ausgelesenem SML Code, kann es dazu kommen, dass der Smartmeter eine Eingabe erwartet und in den Eingabemodus wechselt. Um dies zu verhindern ist die Sendediode abzukleben.

Eigenheiten SML Zähler Registerauslesung

Der im Projekt verwendete SML Zweirichtungszähler ist ein Easymeter Q3A. Dieser sendet ohne Aufforderung jede Sekunde ein Datenpaket das aus 784 HEX Zeichen besteht (Einstellung serielle Schnittstelle: Baud 9600 8N1 unidirektional). Für die Auswertelogik auf dem Arduino werden nur die folgend dargestellten Werte aus der SML Nachricht benötigt, die extrahiert und in lesbare Zahlen formatiert werden:

  • 1.8.0 Bezug Gesamt - gridImport [kWh]
  • 1.7.0 oder 16.7.0 Wirkleistung – gridPower [W]

Hinweis: Folgende Werte werden von der Auswertelogik ebenfalls benötigt, stammen aber vom Modbus 1-Phasenzähler für die Messung der Einspeiselesitung der Wechselrichter ins Hausnetz:

  • 2.7.0 PV_Leistung,pvPower [W]
  • 2.8.0 PV_Einspeisung, pvExport [kWh]

Für die Dechiffrierung des SML Codes ist folgende Lektüre sehr empfehlenswert. schatenseite.de

Zur Extrahierung der Werte (Leistung, Energie) aus der SML Nachricht wird im Arduinocode die entsprechende für einen Zähler unveränderliche Hex Sequenz, die der gesuchten Leistung (1.7.0 oder 16.7.0) oder Energie (1.8.0) im SML Code vorangestellt ist, gesucht, die folgenden HEX Werte extrahiert und in eine Zahl umgewandelt, die der Code weiterverarbeiten kann. Die Hex Sequenzen nach denen in der SML Nachricht gesucht werden soll, ist im Code unter folgenden Variablen hinterlegt und muss für jeden SML Zähler entsprechend angepasst werden:

  • powerSequence[]
  • consumptionSequence[]

Je nach Zähler wird die Leistung oder Energie nicht nur in Basiseinheiten wie W oder Wh angegeben sondern ggf. in kW oder kWh. Dies muss im Code über die Variablenwerte scaler_gridPower_SML und scaler_gridImport_SML angepasst werden.

Start und Stopsequenz sind bei jeder gültigen SML Nachricht gleich und sind folgendermaßen definiert:

  • startSequence[] = { 0x1B, 0x1B, 0x1B, 0x1B, 0x01, 0x01, 0x01, 0x01 };
  • stopSequence[] = { 0x1B, 0x1B, 0x1B, 0x1B, 0x1A };

Herausfordernd sind im Detail die kleinen Unterschiede der SML Nachrichten. So gibt es Zähler, die die Leistung nicht vorzeichenbehaftet ausgeben. D.h. Stromverbrauch und Einspeisung ist nicht am Vorzeichen der Leistung zu erkennen. Dafür ändert sich bei Einspeisung aber ein bestimmtes Byte in der Sequenz des Bezuges 1.8.0! was entsprechend in der Auswerteroutine berücksichtigt werden muss. Es empfiehlt sich also beim Einsatz eines unbekannten SML Zählers zuerst die HEX Nachricht mithilfe des USB Schreib- Lesekopfes und dem Programm Emlog anzeigen zu lassen, die entsprechenden Sequenzen zu ermitteln, zu extrahieren für Stromverbrauch und Stromeinspeisung und dann im Arduinocode zu hinterlegen.

Aufbau des Systems

2. Prototyp

Ziel des Systemaufbaus ist es so einfach und kompakt wie möglich alle Systemkomponenten des Solarspeichers in einem Standardschaltschrank unterzubringen. Die Befestigung mithilfe des Hutschienensystems auf einer geerdeten Grundplatte bietet sich an. Die Kabelführung erfolgt in ausbrechbaren Verdrahtungskanälen, die Stromverteilung erfolgt mithilfe von Wagoklemmen. Mess- und Steuerleitungen sollten im Besten Falle getrennt von den leistungsführenden Leitungen z.B. in zweikammerigen Verdrahtungskanälen verlegt werden. Ziel ist es alle Mess- und Steuerleitungen mit eindeutigen Steckern zu versehen, sodass schnell die passenden Buchsen auf den jeweiligen Platinen gefunden werden können. Die Pulsweitenmodulation (PWM) des Heizstabregelmoduls erzeugt ein elektromagnetisches Störfeld welches die Temperaturmessung am Trinkwarmwasserspeicher (sofern die Messleitung des Temperatursensors in der Nähe der Heizstabversorgungsleitungen liegt) stört. Aufgrund dessen ist das Heizstabregelmodul extern in der Nähe des Trinkwarmwasserspeichers angebracht. Das Anschlusskabel zum Heizstab ist somit kurz und es treten keine elektromagnetischen Störungen entlang des Verbindungskabels Solarschaltschrank --> Haushaltsschaltschrank auf. Aufgrund der Notwendigkeit der dreiphasigen Strommessung am Hauseingangszähler sitzt der dreiphasige Modbuszähler extern im Hausschaltschrank und ist mit einem CAT5 Kabel mit dem Solarspeicher verbunden. Die Modbusmessung der Solareinspeisung erfolgt im vorliegenden Projekt ebenfalls im Hauschaltschrank, kann aber genauso direkt im Schaltschrank des Solarspeichers gemessen werden. Die Reihenschaltung der Solarmodule erfolgt im vorliegenden Projekt mithilfe von gebrückten Wago-Doppelreihenklemmen. Um Kabelmeter und Leitungsverluste zu vermeiden ist zu empfehlen die Verschaltung der Module mittels PV Stecker direkt auf dem Dach herzustellen. Somit erreichen nur noch 2 x 6mm^2 Ölflexkabel den Schaltschrank. Es ist zu empfehlen den Schaltschrank so zu dimensionieren, dass der Lithium-Akkumulator ebenfalls im unteren Teil des Schaltschrankes Platz findet. Im vorliegenden Projekt dienten zuerst große geschlossene Bleiakkumulatoren als Energiespeicher, die außerhalb und direkt hinter dem Schaltschrank zur Aufstellung kamen. Nach Ersatz der Bleiakkumulatoren durch einen LiFePo4 Akkumulator kam mangels Platz im Schaltschrank auch dieser außerhalb zur Aufstellung. Da die Wechselrichter für die Montage unter dem Solarmodul auf dem Dach gedacht sind, gibt es an deren Gehäuse nur zwei stark exzentrische Laschen zur Befestigung. Im vorliegenden Projekt werden die Wechselrichter mithilfe zweier Gewindestangen, Muttern und großen Unterlegscheiben flach übereinander befestigt. Es besteht alternativ auch die Möglichkeit mithilfe von Winkeln den Wechselrichter um 90° gedreht im Schaltschrank unterzubringen.


Interne Systemkomponenten

  • Wechselrichter
  • Laderegler
  • BMS
  • Lüfter
  • Raspberry
  • Arduinoplatine, Mosfetplatine
  • Stromversorgung
  • Sicherungsautomaten
  • Wagoverteiler
  • Temperatursensor Schaltschrank

Externe Systemkomponenten

  • Modbuszähler
  • Zähler Solareinspeisung
  • PV Module
  • Heizstabregelmodul
  • Temperatursensor Trinkwasserspeicher
  • Akkumulator
Schaltschrank

Im vorliegenden Projekt ist folgender Schaltschrak im Einsatz:

  • Schaltschrank (H / B / T) 600mm x 600mm x 300mm IP65 für ca. 100€
  • Kabeleinführung: oben
  • Türanschlag: rechts
Materialliste

Eine ausführliche Materialliste inklusive Preise stehen für das vorliegende Projekt in der Exceltabelle „PV_Berechnung_Energiespeicher“ (siehe Kapitel "Berechnung, Simulation, Auslegung, Kostenberechnung, Optimierung" in dieser Doku) im Registerblatt „Kostenberechnung 2.Prototyp LiFePo“ zur Verfügung.

Verdrahtungsplan

Unter folgendem Link ist der Schaltplan des Solarspeichers entweder als .pdf oder als einzelne .svg Dateien abrufbar .

Prototyp 3

Schaltschrank

Der 3. Prototyp wird incl. Akkumulator in einem Schaltschrank untergebracht. Die Abmaße des Schaltschrankes (Rittal AX 1180.000) betragen 800 mm x 1000 mm x 300 mm (B x H x T). Zum Einführen der Kabel wird die Flanschplatte SZ 2565.400 verwendet. Ausgehend von dem Solar-Storage-Controller werden alle Komponenten angeschlossen.


Materialliste

Folgende Komponenten- und Kostenliste listet alle verwendeten Materialien incl. Preis und Bezugsort auf File:20220601_Komponenten- und Kostenübersicht Soldorado Solarspeicher.pdf.

Verdrahtungsplan

Unter folgendem Link ist der Schaltplan des Solarspeichers entweder als .pdf oder als einzelne .svg Dateien abrufbar .

Systemwirkungsgrad (2. Prototyp)

Um die Gesamteffizienz des Solarspeichersystems zu untersuchen sind im Folgenden vier Beispieltage ausgewählt und die erzeugten und umgesetzten Energiemengen dargestellt. Die Graphiken der jeweiligen Tagesverläufe sind unter folgenden Links abrufbar:

WR Leistung (hellgrün), Solarerzeugung (orange), Regelgröße Heizstab (rot), State of Charge (SOC) (grün), Boilertemperatur (blau)

Erzeugungs- und Verbrauchsprofil : WR Leistung (hellgrün), Solarerzeugung (orange), Regelgröße Heizstab (rot), State of Charge (SOC) (grün), Boilertemperatur (blau)

Erzeugungs- und Verbrauchsprofil : WR Leistung (hellgrün), Solarerzeugung (orange), Regelgröße Heizstab (rot), State of Charge (SOC) (grün), Boilertemperatur (blau)

Erzeugungs- und Verbrauchsprofil : WR Leistung (hellgrün), Solarerzeugung (orange), Regelgröße Heizstab (rot), State of Charge (SOC) (grün), Boilertemperatur (blau)

Auswertung Systemgesamteffizienz (Solaranlage mit 1kWp)

Betrachtungszeitraum 20.07.2019: 22.07.2019 23.07.2019 24.07.2019
Systemkonfiguration 1x WR 350 W, Heizstabbetrieb, WR auf Volleinspeisung sobald Akkumulator annähernd voll 1x WR 350 W, Heizstabbetrieb, WR auf Volleinspeisung sobald Akkumulator annähernd voll 1x WR 350 W, Heizstabbetrieb, WR auf Volleinspeisung sobald Akkumulator annähernd voll 1x WR 350 W, Heizstabbetrieb, WR auf Volleinspeisung sobald Akkumulator annähernd voll
Energieerzeugung
Ladereglererzeugung 3,81 kWh 4,03 kWh 4,13 kWh 4,1 kWh
Energieverbrauch
Temperaturerhöhung Boiler 882 kJ bzw. 0,25 kWh 655 kJ bzw. 0,18 kWh 1961 kJ bzw. 0,54 kWh 0,34 kWh
Wechselrichterleistung 3 kWh 3,03 kWh 3,38 kWh 3,38 kWh
Ladedifferenz Akku/24h Morgens SOC 54 %, abends SOC 63 %, 6,3 Ah = 0,18 kWh Morgens SOC 60 %, abends SOC 79 %, 13,3 Ah bzw. 0,38 kWh Morgens SOC 78 %, abends SOC 60 %, 12,6 Ah bzw. 0,36 kWh Morgens SOC 60 %, abends SOC 50 %, 7 Ah bzw. 0,20 kWh
Systemwirkungsgrad
Nutzen / Aufwand = (0,25 + 3) / (3,81 - 0,18) = 89,5 % =(3,03 + 0,18) / (4,03 - 0,38) = 88 % =(0,544 + 3,38) / (4,13 + 0,36) = 87,4 % = (0,34 + 3,382) / (4,1 + 0,2) = 86,5 %

Berechnung, Simulation, Auslegung, Kostenberechnung, Optimierung

Das Exceltool stellt folgende Funktionen zur Verfügung:

  • Simulation eines Batteriespeichersystems in Anlehnung an das durchgeführte Projekt
  • Material und Preisliste der verwendeten Materialien
  • Möglichkeit der energetischen und wirtschaftlichen Optimierung eines Solarspeichers

Das Exceltool ist in folgendem Repo abgelegt: gitlab.opensourceecology.de/

Beschreibung der einzelnen Registerkarten

Registerkartenübersicht

  • Registerkarte 1 Begriffsdefinitionen
  • Registerkarte 2 Anleitung --> Infos zur Benutzung des Exceltools
  • Registerkarte 3 Deckblatt --> Eingabe der Eingabedaten und Ausgabe der Ergebnisse
  • Registerkarte 4 Optimierung --> Möglichkeit der Optimierung der Speichersystemauslegung
  • Registerkarte 5 Berechnung --> Speicherberechnung
  • Registerkarte 6 Kostenberechnung 2.Prototyp LiFePo --> Hauptblatt der Kostenberechnung der untersuchten vier Systemtypen
  • Registerkarte 7 Ladereglerauslegung --> Auslegung und Dimensionierung verschiedener Systemkombinationen aus PV Modulen und Laderegler
  • Registerkarte 8 Kosten BMS Platine --> Unterblatt zur Kostenberechnung
  • Registerkarte 9 Kosten Heizstabmodul --> Unterblatt zur Kostenberechnung
  • Registerkarte 10 Kosten Systemtyp 4 Minipv --> Unterblatt zur Kostenberechnung
  • Registerkarte 11 Kosten Verbindungsmodul Modbus --> Unterblatt zur Kostenberechnung
  • Registerkarte 12 Kosten Spannungswandlermodul --> Unterblatt zur Kostenberechnung
  • Registerkarte 13 Kosten Arduino- und Mosfetplatine --> Unterblatt zur Kostenberechnung
  • Registerkarte 14 solare Einstrahlung --> Wetterdatenbank für solare Einstrahlung in Abhängigkeit der Dachausrichtung
  • Registerkarte 15 Lastprofilablage --> Datenbank unterschiedlicher Lastprofile in Abhängigkeit vom Jahresgesamtstromverbrauch des Haushalts
  • Registerkarte 16 Hintergrunddaten
  • Registerkarte 17 Änderungsmanagement

Registerkarte 1 „Begriffsdefinitionen“

  • Autarkiegrad [%]

Direkt (bzw. indirekt über Batterie) verbrauchte solar erzeugte Strommenge im Haushalt in Prozent gemessen am jährlichen Stromverbrauch.

Autarkie = direkt (bzw. indirekt über Batterie) verbrauchte solare Strommenge / Stromjahresverbrauch

  • Eigenverbrauch bzw. Systemwirkungsgrad [%]

Direkt verbrauchte Strommenge gemessen am jährlichen Verbrauch.

Eigenverbrauch = direkt (bzw. indirekt über Batterie) verbrauchte solare Strommenge / jährliche Erzeugung

  • Systemwirkungsgrad

Systemwirkungsgrad in Prozent sagt aus, wieviel der eingestrahlten Energie auf die PV Mdule letzendlich verwendet wurde

Registerkarte 2 Anleitung

Infos zur Benutzung des Exceltools.

Registerkarte 3 Deckblatt

Hier werden unter den Zeilen „Eingabedaten“ alle relevanten Eckdaten der PV Berechnung eingegeben und unter Ergebnisse alle relevanten Berechnungsergebnisse ausgegeben. Bei der Eingabe ist zu empfehlen die jeweiligen Hinweise in den Eingabezellen zu beachten. Eingabedaten sind im Einzelnen:

  • Modulwirkungsgrad in % z.B. 16%
  • Wirksame Modulfläche in m^2 z.B. 1,66m^2
  • Modulanzahl
  • Dachausrichtung (Auswahlmöglichkeit durch hinterlegten Datensatz für Standort Stuttgart bei 30° Dachneigung: Ost, Süd-Ost, Süd, Süd-West, West)
  • Dachneigung: bisher nur 30° möglich
  • Systemspannung (zur Berechnung der Batteriekapazität) z.B. 24 oder 48V
  • Batteriegröße in Ah zur Berechnung der Batteriekapazität in Wh
  • Maximal zugelassene Tiefentladung der Batterie in %: zur Berechnung der effektiv zur Verfügung stehenden Batteriekapazität z.B. 50% bei Bleiakkumulator, 80% bei LiFePo Akkumulator
  • Batteriewirkungsgrad z.B. 70% bei BleiAkkumulator, 90% bei LiFePo
  • Systemkürzel (definiert für Systemtyp 1 + 2 mögliche Systemkombinationen aus PV Modulen und Ladereglertypen. (Batteriespannung - Modultyp - Anzahl PV Module – Preis) (für Kostenberechnung)
  • Anzahl Batteriezellen (für Kostenberechnung) z.B. 2x 12V bei BleiAkkumulator und 24V Systemspannung oder 15x3,2V bei LiFePo Zellen für ein 48V System
  • Anzahl Miniwechselrichter (für Kostenberechnung)
  • Miniwechselrichtertyp von AE Conversion z.B. 350W oder 500W (für Kostenberechnung)
  • Wechselrichterwirkungsgrad z.B. 92%
  • Stromkosten in €/kWh (für Kostenberechnung)
  • Stromkostensteigerung pro Jahr (für Wirtschaftlichkeitsberechnung) in % (bisher nicht verwendet)
  • Stromjahresbedarf der zu versorgenden Wohnung/ des Hauses in kWh (für die Berechnung eines geeigneten Verbrauchsprofils
  • Typ Verbrauchsprofil: bisher nur EFH möglich (geplant MFH)
  • Primärenergiefaktor Strom nach EnEV (Berechnung der eingesparten Co2 Emissionen)
  • Einspeisevergütung Strom in €/kWh zur (für Amortisationsberechnung)
  • Systempreis €/kWp (bisher nicht verwendet)
  • Wärmekosten €/kWh (für Amortisationsberechnung)
  • Staatliche Förderung Speicher/Solaranlage für Wirtschaftlichkeitsberechnung (bisher nicht verwendet)
  • Installationslänge Solarschaltschrank zu Haushaltsschaltschrank (für Kostenberechnung)
  • Installationslänge Solarmodule zu Haushaltschaltschrank (für Kostenberechnung)
  • Installationslänge Solarmodule zu Solarschaltschrank


Die Berechnungsergebnisse werden für vier Systemtypen berechnet, die wie folgt definiert sind:

  • Systemtyp 1: Speichersystem mit Akkumulator, Eigenverbrauch und Heizstab ohne Netzeinspeisung.
  • Systemtyp 2: Speichersystem mit Akkumulator, Eigenverbrauch und Netzeinspeisung
  • Systemtyp 3: konventionelles System mit Eigenverbrauch.

Hinweis zu Systemtyp 3:
Die Kostenberechnung ist hier sehr einfach gehalten und erfolgt anhand des Systempauschalwertes in €/kWp, der im Deckblatt in der Zelle „Systempreis“ definiert wurde (z.B. 1300€/kWP). Um ein „konventionelles System“ energetisch abzubilden, ist die „Summe der effektiven Wechselrichterleistung“ auf für konventionelle Systeme übliche Werte anzuheben indem z.B. die Anzahl der Wechselrichter im Eingabefeld „WR Typ AE Conversion(350W oder 500W)“ angehoben wird.

  • Systemtyp 4: Minipv ohne Speicher, Direkteinspeisung Steckdose.

Hinweis zu Systemtyp 4:
Diese Systemkonfiguration ergibt Sinn für kleinere Systemkombinationen mit z.B. 2-3 Solarmodulen.

Allgemeine Hinweise: Für eine nachvollziehbare Systemauslegung und Kostenberechnung wurden für Systemtyp 1 und Systemtyp 2 sogenannte Systemkürzel eingeführt. Diese bestehen aus drei Zahlen getrennt durch Bindestrich (Bsp.: 33V-60-4). Dabei steht die erste Zahl für die Batteriespannung (28,8V, 33V oder 48V), die zweite Zahl für den Modultyp (60 zellige Module oder 72 zellige Module) und die dritte Zahl für die Modulanzahl (3 - 20 Module). Diese Systemkürzel müssen im Deckblatt in der Zelle „Systemkürzel“ korrekt definiert werden und manuell darauf geachtet werden, dass die zu einem Systemkürzel dazugehörigen Werte in den anderen Eingabezellen wie „Systemspannung“ (28,8V, 33V oder 48V), „Modultyp“ (60-zellig oder 72-zellig) und die „Modulanzahl“ korrekt eingegeben sind.

Folgende Berechnungsergebnisse werden angezeigt:

  • effektive Batteriegröße [Wh]
  • Anzahl Ladezyklen pro Jahr [-]
  • eingestrahlte Solarenergie pro Jahr [kWh/m^2/a]
  • zur Verfügung stehende Solarenergie in Bezug auf konkrete Anlage (incl. ηModul und ηWR) [kWh]
  • verwendete Solarenergie [kWh]
  • vorgegebenes jährliches Lastprofil [kWh]
  • Eigenverbrauch (ohne Wärme, nur Strom) [%]
  • Batteriespeicherverluste [kWh/a]
  • Prozentualer Anteil eingespeister Leistung an max. möglichem [%]
  • Autarkiegrad [%]
  • Strom an WW Speicher [kWh/a]
  • Netzeinspeisung Überschuss [kWh]
  • Gewinn durch Einspeisevergütung und selbst verbrauchten Strom [€]
  • Aufwand/Kosten ohne MwSt [€]
  • Amortisation [a]
  • Eingesparte Co2 Menge [t/a]

Hinweis: Ist in der Registerkarte Optimierung das Häkchen Optimierung aktiviert, so sind alle rot eingefärbten Eingabefelder in der Registerkarte Deckblatt inaktiv/nicht aktuell!

Registerkarte 4 Optimierung

Diese Registerkarte soll unter Beachtung und mithilfe gezielter Veränderungen verschiedener Randbedingungen bei der Optimierung der Speichersystemauslegung unterstützen und helfen, dass der Nutzer ein energetisch und wirtschaftlich optimales Speichersystem auswählt. Um die Optimierung für die Systemtypen 1 und 2 anzuschalten muss das Häkchen Optimierung aktiviert sein. Beachte, dass dann in der Registerkarte Deckblatt alle rot eingefärbten Eingabefelder inaktiv/nicht aktualisiert werden. Die Registerkarte Optimierung bietet die Möglichkeit zwei Optimierungsziele festzulegen und diese in Bezug zueinander in einem 2 D Diagramm darzustellen und auszuwerten in Abhängigkeit von bis zu 5 Stellgrößen.

Optimierungsziele können sein:

  • Autarkiegrad [%]
  • Eigenverbrauch [%]
  • Systemgesamtkosten [€]
  • Amortisationszeit [a]

Stellgrößen können sein:

  • Modulanzahl [St]
  • wirksame Modulfläche [m^2]
  • Dachausrichtung
  • Dachneigung [°]
  • Batteriegröße [Wh]
  • Anzahl Wechselrichter [St.]
  • Wechselrichtertyp (350W oder 500W)
  • Stromkosten [€]
  • Stromkostensteigerung pro Jahr [€/a]
  • Stromjahresbedarf [kWh/a]
  • Typ Verbrauchsprofil
  • Einspeisevergütung [€/kWh]
  • Wärmekosten [€/kWh]
  • staatliche Förderung Speicher/Solaranlage [€]

Mithilfe der Dropdownfelder können die Optimierungsziele sowie die Stellgrößen ausgewählt werden. Die Optimierungsziele berechnen sich selbst neu in Abhängigkeit von den eingegebenen Zahlen unter den Stellgrößen. Mithilfe des Buttons Zwischenergebnisse einloggen werden die zwei Berechnungsergebnisse für eine Systemkombination in das Diagramm übernommen. Mithilfe des Buttons Zwischenergebnisse löschen werden alle vorhandenen Zwischenergebnisse gelöscht.


Beispiel:
Optimierungsziel 1: x-Achse: Amortisationszeit
Optimierungsziel 2: y-Achse: Autarkiegrad
Stellgröße 1: Batteriegröße. Diese variiert zwischen 20 und 200Ah.


Alle anderen Parameter und Randbedingungen zur Definition der Solaranlage müssen unter dem Deckblatt vor der Optimierung eingetragen werden.

Registerkarte 5 Berechnung

In dieser Registerkarte erscheinen in den ersten Zeilen 1 bis 37 dieselben Eingabedaten und Berechnungsergebnisse wie auf dem Deckblatt. In der Zeile 42 bis 8802 befinden sich die stündlichen Berechnungszwischenschritte für ein Jahr. In den Spalten A bis V sind die Kopfzeilenbeschriftungen zu finden, die die Zwischenergebnisse beschreiben. Es erfolgt für jede Stunde auf Grundlage des ausgewählten Wetterdatensatzes (Standort, Dachneigung) eine komplette Systemberechnung. Ausgehend von der eingestrahlten Solarenergie wird der Solarertrag abzüglich Umwandlungsverluste durch Wechselrichter und PV Modul berechnet. Das ausgewählte elektrische Verbrauchsprofil des Haushaltes dient zur Berechnung des Stromeigenverbrauchs (Direktverbrauch Solar), der überschüssigen Ladeenergie für die Batterie, der überschüssigen Energie für den Heizstab und bei der Systembetrachtung mit Einspeisung der überschüssigen Energie zur Netzeinspeisung. Da die angegebene maximale Wechselrichterleistung bei diesem Solarspeichersystem bewusst auf 300W bzw. 500W beschränkt ist, wirkt die maximale Wechselrichterleistung als der begrenzende Faktor bei der Eigenverbrauchsberechnung. Batteriespeicher- und Umwandlungsverluste werden mitberechnet. Der Ladestatus der Batterie oder des thermischen Speichers zu jeder Stunde im Jahr sowie die Anzahl der Ladezyklen der Batterie werden berechnet. In Zeile 8804 stehen die Jahressummen der Spalten. Alle Ergebnisse werden zusammengefasst in den ersten Zeilen der Registerkarte Berechnung und in der Registerkarte auf dem Deckblatt.

Registerkarte 6 Kostenberechnung 2.Prototyp LiFePo

Um Aussagen über die Amortisationszeit und die Investitionskosten machen zu können, werden in den folgenden Registerblättern die Materialkosten des Speichers aufgeschlüsselt. Die Kostenberechnung erfolgt für die vier untersuchten Systemtypen. Die aufgelisteten Bauteile und deren Preise orientieren sich an den wahren Einkaufspreisen für den Prototypenbau im Jahre 2018/2019. Die Kostenberechnung passt sich dynamisch an das jeweils im Deckblatt ausgewählte System an. Alle Kosten sind skaliert mit hinterlegten Formeln. Deren Beschreibung ist in der Spalte N zu finden.

Registerkarte 7 Ladereglerauslegung

Je nach Systemgröße (Anzahl PV Module) werden unterschiedliche Ladereglergrößen verwendet. Um für die Kostenberechnung einen Preis festzusetzen, ist es somit zunächst notwendig die möglichen Modulverschaltungskombinationen festzulegen. Für kleinere Systeme (bis max. 6 Module) ist eine Kombination mit einem 28,8V Akkumulator (9 Zellen, wie hier im Projekt verwendet) noch möglich. Alle größeren Systeme müssen einen Akkumulator mit höherer Spannung (z.B. 36 V oder 48 V) verwenden. Die Victron Laderegler werden durch zwei Zahlen gekennzeichnet. Z.B. 100/30. Die erste Zahl steht für die maximal erlaubte Leerlaufspannung, die zweite Zahl für den maximalen Outputstrom des Ladereglers. Victron bietet Laderegler für eine Eingangsspannung von 100V, 150V ,250V an. Unter Berücksichtigung zweier Solarmodultypen (60 Zeller mit 300WP (--> Leerlaufspannung bei tiefen Temperaturen max. 45V) und 70Zeller mit 360WP(--> Leerlaufspannung bei tiefen Temperaturen max. 54V) ergeben sich die in folgender Tabelle aufgelisteten möglichen Solarmodulkombinationen für die jeweiligen Ladereglertypen. Das Systemkürzel ist wie folgt definiert: Batteriespannung - Modultyp - Anzahl PV Module - Kosten Laderegler

100V Laderegler - Modulverschaltung mit 60 Zellen pro Modul für 33V Systeme
Systemkürzel Reihe Parallel Anzahl 60 Zellen Module Peakleistung Module [W] Leistung LR Output @ 33V Akku [W] P_LR/P_PV [-] LR Typ LR Kosten [€]
33V - 60 - 4 - 202 2 2 4 1200 990 0,83 100/30 202
33V - 60 - 6 - 303 2 3 6 1800 1650 0,92 100/50 303
150V Laderegler - Modulverschaltung mit 60 Zellen pro Modul für 48V Systeme
Systemkürzel Reihe Parallel Anzahl 60 Zellen Module Peakleistung Module [W] Leistung LR Output @ 50V Akku [W] P_LR/P_PV [-] LR Typ LR Kosten [€]
48V-60-3-326 3 1 3 900 1750 1,94 150/35 326
48V-60-6-326 3 2 6 1800 1750 0,97 150/35 326
48V-60-9-449 3 3 9 2700 2250 0,83 150/45 449
48V-60-12-505 3 4 12 3600 3000 0,83 150/60 505
48V-60-15-556 3 5 15 4500 3500 0,78 150/70 556
48V-60-18-657 3 6 18 5400 4250 0,79 150/85 657
48V-60-21-910 3 7 21 6300 5000 0,79 150/100 910
48V-60-24-910 3 8 24 7200 5000 0,69 150/100 910
150V Laderegler - Modulverschaltung mit 72 Zellen pro Modul für 48V Systeme
Systemkürzel Reihe Parallel Anzahl 60 Zellen Module Peakleistung Module [W] Leistung LR Output @ 50V Akku [W] P_LR/P_PV [-] LR Typ LR Kosten [€]
48V-72-2-326 2 1 2 720 1750 2,43 150/35 326
48V-72-4-326 2 2 4 1440 1750 1,22 150/35 326
48V-72-6-326 2 3 6 2160 1750 0,81 150/35 326
48V-72-8-449 2 4 8 2880 2250 0,78 150/45 449
48V-72-10-505 2 5 10 3600 3000 0,83 150/60 505
48V-72-12-556 2 6 12 4320 3500 0,81 150/70 556
48V-72-14-657 2 7 14 5040 4250 0,84 150/85 657
48V-72-16-910 2 8 16 5760 5000 0,87 150/100 910
48V-72-18-910 2 9 18 6480 5000 0,77 150/100 910
48V-72-20-910 2 10 20 7200 5000 0,69 150/100 910
250V Laderegler - Modulverschaltung mit 60 Zellen pro Modul für 48V Systeme
Systemkürzel Reihe Parallel Anzahl 60 Zellen Module Peakleistung Module [W] Leistung LR Output @ 50V Akku [W] P_LR/P_PV [-] LR Typ LR Kosten [€]
48V-60-16-859 4 4 16 4800 4250 0,89 250/85 859
48V-60-20-910 4 4 20 6000 5000 0,83 250/100 910
48V-60-25-910 5 5 25 7500 5000 0,67 250/100 910
250V Laderegler - Modulverschaltung mit 72 Zellen pro Modul für 48V Systeme
Systemkürzel Reihe Parallel Anzahl 72 Zellen Module Peakleistung Module [W] Leistung LR Output @ 50V Akku [W] P_LR/P_PV [-] LR Typ LR Kosten [€]
48V-72-9-657 3 3 9 3240 3000 0,93 250/60 657
48V-72-15-859 3 5 15 5400 4250 0,79 250/85 859

In der Registerkarte Ladereglerauslegung werden weiterhin gewählte Kabeldurchmesser, Stringanzahl sowie Anzahl an PV-Verbindungsleitungen und MC4 Stecker aufgelistet.

Mit dem hier beschriebenen Speicheraufbau sind Systeme bis max. ca. 60A bei einer Schaltschrankverdrahtung von 16mm^2 möglich/sinnvoll.

Registerkarte 8 Kosten BMS Platine

  • Unterblatt zur Kostenberechnung

Registerkarte 9 Kosten Kosten Heizstabmodul

Registerkarte 10 Kosten Systemtyp 4 Minipv

Registerkarte 11 Kosten Verbindungsmodul Modbus

  • Unterblatt zur Kostenberechnung

Registerkarte 12 Kosten Spannungswandlermodul

  • Unterblatt zur Kostenberechnung

Registerkarte 13 Kosten Arduino- und Mosfetplatine

  • Unterblatt zur Kostenberechnung

Registerkarte 14 solare Einstrahlung

  • Wetterdatenbank für solare Einstrahlung in Abhängigkeit der Dachausrichtung. Quelle satellight.com

Registerkarte 15 Lastprofilablage

  • Datenbank unterschiedlicher Lastprofile in Abhängigkeit vom Jahresgesamtstromverbrauch des Haushalts. Quelle: VDI 4655

Registerkarte 16 Hintergrunddaten

Daten die zur Darstellung in Excel dienen.

Registerkarte 17 Änderungsmanagement

Hier werden chronologisch nach Datum Aktualisierungen und Änderungen am Excelfile dokumentiert

Organisatorisches

Entwickler-Team

Thomas Plaz
Frank Richter

Roadmap and Log

  • Okotber 2015 - Projektstart
  • Juli 2018 - Inbetriebnahme 2. Prototyp
  • November 2019 - Projekt-Seite mit Bauanleitungen im Wiki erstellt
  • 2020 - Überarbeitung Absicherungskonzept BMS
  • 2020 - Neukonstruktion Arduino- und Mosfetplatine in KiCAD mit Gehäuse
  • 2020 - Integration der neuen Arduino- und Mosfetplatine und der damit zusammenhängenden hard- und softwareseitigen Neuerungen
  • 2020 - Überarbeitung Heizstabansteuerung
  • 2021 - Redesign des Schaltschrankes / Integration des Akkumulators in den Schaltschrank / Bau des 3. Protoypen
  • 2021 - Komplette Neukonstruktion der sogenannten Hautplatine, die nun alle Funktionen der bisherigen Arduino- und Mosfetplatine und den Leistungsteil (SNS) des Batteriemanagementssystems vereint
  • 2021 - Neuauflage der BMS Platine unter Behebung kleiner Hardwarefehler
  • 2021 - Gehäuseintegration der Hauptplatine
  • 2021 - Umfangreiche Überarbeitung des Arduino Codes z.B. Integration der Auslesung von SML Zähler per Magnet-Lesekopf und Ansteuerung mehrerer Wechselrichter in Kaskade

2021 / 2022:

  • Integration intelligentere SOC Berechnung im BMS
  • Erstellung Schaltplan des 3. Prototypen
  • Integration der Projektdokumentation und Quelldaten in GitLab

2023:

  • erfolgreiche Inbetriebnahme 3. Protoyp und Test aller Funktionen
  • 3. Protoyp in Regelbetrieb
  • Überarbeitung der SML Auswerteroutine
  • Aktualisierung des Frontpanels des NodeRed UI
  • Einbindung einer manuell oder automatisch schaltenden Schaltsteckdose bei Überschussstrom über NodeRed und MQTT
  • Integration der Überschusseinspeisung mit zwei Wechselrichtern (ca. 1kW) auch wenn Hauslast geringer ist (Bei einem System ohne angeschlossenen Heizstab ist es schade Solarenergie nicht zu nutzen wenn der Speicher voll ist)

Zukünftige Ziele:

  • Inbetriebnahme weiterer Solarspeicher, Anfragen werden gerne entgegen genommen

Aktueller Entwicklungs-Status

Der 3. Prototyp wurde 2023 erfolgreich in einem Einfamilienhaus in Betrieb gesetzt und verrichtet seither seine Dienste. Über das volkszähler Frontend sind für uns Entwickler die Betriebsdaten einsehbar, sodass ein Monitoring möglich ist.

ToDo next

  • Monitoring des 3. Prototypen im Regelbetrieb
  • Auslagerung der Auslesung des SML Zählers auf ein externes Arduino in der Satellitenplatine
  • Protokollüberarbeitung der seriellen Schnittstelle zwischen BMS und Arduino
  • Auslegung des Heizstabregelmoduls für ein 48V System
  • Nachbau und Austausch durch und mit interessierten Anwendern

Weitere Details siehe im Abschnitt "Projekthistorie und Ziele".

Open Tasks for volunteers ;-)

  • Mitarbeit und Diskussion im und mit dem Entwicklungsteam
  • Planung und Optimierung des Schaltschrankaufbaus für weitere Prototypen
  • Auslegung des Heizstabregelmoduls für ein 48V System und Konstruktion in KiCAD
  • Übersetzung der Dokumentation und Quelldaten auf Englisch
  • Verbreitung und Nachbau des Solar-Speichers
  • Bei Interesse, auch wenn die obigen Aufgaben euch nicht 100% zusagen, kommt auf uns zu (siehe Abschnitt Kontakt) und wir sprechen direkt über Möglichkeiten der Mitarbeit im Bereich deines Interesses und deiner Fähigkeiten. Wir freuen uns schon ;-)

Spenden

Wenn euch dieses Projekt unterstützungswürdig erscheint und eine Projektzukunft gesichert werden soll, dann drückt gerne auf folgenden Button und gedenkt dabei an unsere bisherigen zeitlichen und finanziellen Aufwendungen dieses Gedankengut öffentlich zur Verfügung zu stellen:

Literatur und Links