Merkmale und Technik

Aus FreeSol-Wiki

Technische Merkmale

Grundversion

  • Bestellliste
  • Internes Abspeichern der letzten 100 Tageswerte für die Energieerzeugung (davon die neuesten 40 über die Weboberfläche angezeigt)
  • Internes Abspeichern der 5-Minutenwerte des aktuellen Tages und des Vortages
  • Automatische Statusmail einmal täglich
  • Ausgang mit Signal, falls aktuelle Solarleistung über einem Schwellwert liegt (so kann man einen Verbraucher steuern).
  • Tabellarische Darstellung
    • der letzten 40 Tageswerte
    • der Monatswerte von aktuellem Monat und Vormonat
    • der 5-Minutenwerte von Tag und Vortag
  • Grafische Darstellung
    • der 5-Minutenwerte von Tag und Vortag

Erweiterungspaket S0-Zähler

  • Bestellliste
  • Das Paket besteht aus einem S0-Zähler und erzeugt S0-Signale, wenn keiner in der Anlage vorhanden ist
  • Aufgrund der Zählerkosten sollte man zunächst versuchen, die S0-Signale anders zu erzeugen, z.B. mittels einer Photodiode über einer vielleicht vorhandenen LED, die im Takt der Energieerzeugung blinkt, oder mittels einer Lichtschranke am Rad des Ferraris-Zählers.

Erweiterungspaket SML-Lesekopf

  • Bestellliste
  • Das Paket besteht aus Bauteilen für einen Lesekopf, mit dem Daten aus einem SML-Bezugs-Einspeisezähler zusätzlich in das Board eingespeist werden können
  • Internes Abspeichern der letzten 30 Tageswerte für die Bezug und Einspeisung
  • Internes Abspeichern der 5-Minutenwerte des aktuellen Tages und des Vortages von Bezug und Einspeisung
  • Automatische Statusmail einmal täglich umfasst Bezug und Einspeisung
  • Tabellarische Darstellung
    • der letzten 30 Tageswerte von Bezug und Einspeisung
    • der 5-Minutenwerte von Tag und Vortag (Bezug und Einspeisung)
  • Grafische Darstellung
    • der 5-Minutenwerte von Tag und Vortag (Bezug und Einspeisung)
  • Für einen geschützten Zugriff auf die Daten können die Namen aller Webseiten, auf denen Bezug und Einspeisungswerte vorkommen, mit einem frei wählbaren Namensstamm versehen werden.

Detailliertere technische Hintergrundbeschreibung

Hintergrundinfos zu Programmiergeräten

Für das Aufspielen der FreeSol-Sofware auf den Chip im Board sowie für die anschließende Konfiguration benötigt man einen Programmieradapter. Sofern man noch keinen hat, hat man die Wahl zwischen ganz unterschiedlichen Varianten, die im Detail hier beschrieben werden. In der Regel wird man jedoch wohl einen der beiden Programmieradapter aus dem Grundpaket wählen.

Der Sourcecode der FreeSol-Software für das AVR-NetIO-Board

Die FreeSol-Software, die auf den Mikroprozessor geladen werden muss, ist in Basic für den BASCOM-Compiler geschrieben und basiert zum größten Teil auf Quellen des Programmpakets ">NETIO+, in dem verschiedene Ethernet-Dienste für das NetIO-Board implementiert sind. Der komplette Sorcecode ist im Downloadbereich verfügbar und kann somit auch selber weiterentwickelt werden.

Die BASCOM-Programmierumgebung kostet für ein Programm in der Größe von FreeSol allerdings ca. 70 EUR.

Datenstruktur im Eeprom

Sowohl alle notwendigen Parameter zur Konfiguration des Loggers als auch alle dauerhaft gespeicherten Loggerdaten finden sich im Eeprom des Boards. Die folgende Tabelle erläutert die wesentlichen Variablen und ihre Position im Speicher. Zu beachten ist, das Strings im Speicher jeweils ein Byte länger sind, da sie mit FF abgeschlossen werden.


Startposition HEX Typ Name Bemerkung
001 String*12 Ee_s12_hostname Name des Prozessorboards, z.B. "freesol". Taucht z.B. im Router auf und kann dann als Internetadresse im internen Netz aufgerufen werden, z.B. http://freesol
00E Byte*6 Ee_b_macaddr(6) MAC-Adresse des Chips. Der gekaufte Austauschprozessor ATMega1284P hat keine MAC-Adresse, am besten verwendet man hier die Adresse, die auf den kleinen ATMega32-Prozessor aufgeklebt war, der ursprünglich im Board war.
014 Byte*4 Ee_b_ipaddr(4) IP-Adresse des Boards. Diese Adresse ist nur zu Beginn gültig und wird ggf. durch eine mittels DHCP zugewiesene Adresse überschrieben oder zumindest diese DHCP-Adresse verwendet.
018 Byte*4 Ee_b_subnetmask(4) Subnetmask, hier setzt man in der Regel 255.255.255.0
01C Byte*4 Ee_b_defaultgateway(4) Defaultgateway. Hier steht in der Regel die IP-Adresse des Router. Meistens ist das fast IP-Adresse des Boards, nur die letzte der ist Zahlen ist eine 1
020 Byte*4 Ee_b_nameserver(4) Nameserver. In der Regel dieselbe IP-Adresse wie der Router.
024 Byte*4 Ee_b_ntpserver(4) NTP-Server. Dieser Server stellt die Uhrzeit zur Verfügung. Es gibt viele Server im Internet, die das können, bei mir funktioniert 192.145.119.188
0C8 Byte*4 Ee_smtp_server_ip_addr(4) IP-Adresse des sendenden Mailservers. Im Moment nur für GMX getestet.
0CC Byte Ee_b_smtp_server_port_h Portadresse des Mailservers, High Byte
0CD Byte Ee_b_smtp_server_port_l Portadresse des Mailservers, Low Byte
0CE String*31 Ee_s31_meine_email_adresse Absendermailadresse
0EE String*47 Ee_s47_benutzerkennung Benutzerkennung des Mailkontos. ACHTUNG: Nicht die Mailadresse eingeben, die Benutzerkennung ist eine Nummer. Die Benutzerkennung findet sich als Kundennummer bei gmx.de unter "Mein Account".
11E String*31 Ee_s31_passwort Passwort des Mailkontos
13E String*31 Ee_s31_empfaenger_email_adresse Empfängermailadresse
15F Long Ee_fs_speicherdatum_tage Datum des letzten Abspeicherns. Format ist Sysday(), 4197 ist der 29.6.2011
163 Integer*100 Ee_fs_tageswerte(100) Hier werden die letzten 100 Tagesenergiewerte abgespeichert. die Werte werden als Wh/10 abgespeichert, 57,3 kWh gibt also 5730. Die Werte kommen jeweils in die Speicherstelle Sysday Modulo 100, der Wert für den 29.6.2011 (Sysday ist 4197) geht also nach Ee_fs_tageswerte(97).
22B Long Ee_fs_speicherdatum_monate Tag, an dem der letzte Vorgänger-Monatswert Energie abgespeichert wurde.
22F Long Ee_fs_monatswerte Letzter gespeicherter Vorgänger-Monatswert Energie
233 Long Ee_fs_speicherdat_lfdmon Tag, an dem der laufender Monatswert Energie abgespeichert wurde.
237 Long Ee_fs_lfdmonwerte Laufender Monatswert Energie
23B Integer Ee_fs_anlagenleistung Die Peak-Anlagenleistung in Wh. Errechnet sich aus der Nennleistung aller Module.
23D Long Ee_fs_pulszahlges Hier wird jeweils der S0-Zählerstand um Mitternacht abgespeichert. Kann verwendet werden, um ein Zähleroffset zu setzen.
241 Integer Ee_fs_pulsfaktor S0-Pulse pro kWh. Muss ab Version 1.02 angegeben werden, typischerweise 1000.
243 Byte Ee_lcd 0 wenn kein LCD, 1 wenn spezielles 3-Ziffern-LCD mit I2c, 2 wenn LCD TC1604E-01 von Pollin.
244 Byte Ee_fs_maildebugflag Im Normalbetrieb = 0. Falls der Wert manuell auf 1 gesetzt ist, wird alle 5 min eine Testmail geschickt. Hilft beim Einrichten und Testen des Mailaccounts.
245 Integer Ee_fs_schaltschwelle Schaltschwelle für Ausgang Pin2 (EXT) in W (aktuelle Leistung in Watt, Mittelwert über 5 min). Wird 1, wenn Wert die letzten 5 min >= Schaltschwelle war."
247 String*40 Ee_fs_alarmmailtext Text für Alarmierungsmail beim Anliegen eines 0V-Signals auf Pin4 (EXT). Wird einmal pro Minute ausgelesen, ca. bei 22 Sekunden. Mail wird erneut erst nach zwischenzeitlichem Rücksetzen des Signals versandt (auch dies wird nur einmal pro Minute abgefragt). Unbeschaltet gilt als 1.
26F Integer Ee_fs_schaltdauer Zahl der 5min-Intervalle, nach denen das Schaltsignal nach Überschreiten der Schaltschwelle an bleibt. O bedeutet Funktion ist aus.
271 Long Ee_fs_speicherdatum_minuten Tag, an dem die letzen gültigen 5-Minutenwerte abgespeichert wurden. Hilft bei Stromausfällen, wenn Tag älter ist, werden nach dem Booten die Minutenwerte gelöscht.
275 Integer Ee_fs_minw(216) Die 5-Minutenwerte des aktuellen Tages.
425 Integer Ee_fs_dhcp 1: DHVP ausgeschalten, alle anderen Werte : DHCP eingeschalten. Sollte im Normalfall auf 0 stehen.
427 Long Ee_fs_bezug_speichdat_t Letztes Speicherdatum Tagesstand Bezug.
42b Long Ee_fs_bezug_tagesstand(30) Zählerstände des Bezugszählers am Tagesstart.
4A3 Long Ee_fs_einspeis_speichdat_t Letztes Speicherdatum Tagesstand Einspeisung.
4A7 Long Ee_fs_einspeis_tagesstand(30) Zählerstände des Einspeisezählers am Tagesstart.
51F Integer Ee_fs_min_bezug(288) Die 5-Minutenwerte des Bezugs des aktuellen Tages.
75F Integer Ee_fs_min_einspeis(288) Die 5-Minutenwerte der Einspeisung Bezugs des aktuellen Tages.
99F Integer Ee_fs_min_bezug_vt(288) Die 5-Minutenwerte des Bezugs des Vortags.
BDF Integer Ee_fs_min_einspeis_vt(288) Die 5-Minutenwerte der Einspeisung Bezugs des Vortags.
E1F Long Ee_fs_speichdat_vt_t Speicherdatum für 5min Werte von Bezug und Einspeisung des Vortags.
E23 Integer Ee_fs_minw_vt(216) Die 5-Minutenwerte der Solarerzeugung des Vortags.
FD3 String*6 Ee_fs_ev_url Präfix für die Webseiten mit vertraulicher Information (Bezugs- und Einspeisewerte).

Funktionserweiterungen des Loggers

Täglicher Status-Emailversand

Das Programm kann einmal täglich eine Statusemail mit dem Ertrag des Tages an eine Emailadresse versenden. Hierzu ist ein kostenfreier GMX-Mailaccount einzurichten. Die Konfiguration des Boards erfolgt über das Windows-Setup-Programm.

Versand von Störungsmeldungen

Eine externes Signal kann benutzt werden, um dem Board eine Hardwarestörung mitzuteilen. Als Störungsquellen kommen entweder Störungssignale vom Wechselrichter oder auch Zustandsmeldungen von Blitzschutzelementen in Frage.

Im Moment müssen alle Störungen zu einem elektrischen Signal zusammengeführt werden (bei Bedarf könnte ich auch auf mehrere Eingangssignale erweitern). Der zuständige Eingang ist Pin 4 des EXT-Steckers. Ist er unbeschaltet oder liegt er auf 5 V, so liegt keine Störung vor. Falls er auf 0 V gezogen wird und dieses Signal mindestens eine Minute lang anliegt, wird eine Störungsmail an die normale Benachrichtigungsadresse generiert, der Text ist über einen Konfigurationsparameter einstellbar. Falls die Störung weiter besteht, wird eine erneute Mail erst dann verschickt, wenn das Signal mindestens eine Minute lang auf 5V lag. (Technische Umsetzung: Das Signal wird nur einmal pro Minute abgefragt)

Steuerung externer Verbraucher

Falls die Leistung der Solaranlage über einer mit dem Setup-Programm einstellbaren Schaltschwelle liegt (Messung als 5min-Mittelwert), kann ein Steuersignal zum Anschalten eines externen Verbrauchers gegeben werden. Das Steuersignal bleibt mindestens 5 min lang an, jedoch lässt sich über den Parameter "Schaltdauer" konfigurieren, wie viele 5min-Zyklen der Verbraucher anbleiben soll. Sobald ein weiterer 5min-Zyklus über der Schaltschwelle liegt, wird die Anschaltdauer wieder auf die eingestellte Schaltdauer verlängert.

Zur sicheren elektrischen Ansteuerung empfehle ich einen Funksender (Bausatz 9,95 EUR, fertig aufgebaut 17,95 EUR) und eine Funksteckdose (22,95 EUR) von ELV.

Sofern man nur Kleinspannung schalten will oder ein professioneller Elektriker ist, kann man sich auch mal die [href="http://www.pollin.de/shop/dt/NTU5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_Relaiskarte_K1.html Pollin-Relaisplatine K1] ansehen. Achtung, Warnhinweis: Keine 230V-Schaltungen bauen, wenn man nicht weiß, was man tut.

LCD-Display

An das Freesol-Board kann ein LCD-Display vom Typ TC1604A angeschlossen werden (gibts bei Pollin, Bestellnummer 120 628, 8.95 EUR). Da das Board an den 25-poligen Stecker anzuschliessen ist, muss man sich leider das Kabel selber bauen. Sofern man nicht ein altes Kabel mit passendem Stecker hat, von dem man ein Ende abschneiden kann, hilft vielleicht eine Kombination der Pollin-Bestellnummern 721 775 und 720 418 (kosten zusammen 1,50 EUR, Kabel zerschneiden und ein Ende an die LCD-Platine löten).

Die Anschlüsse an der Platine sind mit 1 und 16 beschriftet, die Belegung ist wie folgt:

LCD Display 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
D-Sub-25-Buchse 18 15 18 2 3 4 18 18 18 18 5 6 7 8 15 18
Bedeutung Vss Vdd V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K

Anmerkung: V0 könnte man an den Abgreifkontakt eines 10K-Potis legen und damit die Displayhelligkeit regeln, habe ich aber konstant an Masse liegen. Ebenfalls ist das Display nicht ausschaltbar.

Achtung: Hintergrundbeleuchtung auf PIN 15 braucht eventuell einen Vorwiderstand von ca 10 Ohm, da bin ich noch am Forschen.

Zur Aktivierung des Displays muss der Konfigurationsparameter fs_lcd auf 2 stehen.