1. Messdatenerfassung der PV-Anlage

8-Kanal Analog-Digital-Wandler
8-Kanal, 13 Bit A/D-Wandler (Datenblatt: Bild anklicken)

Messdatenverarbeitung in der heutigen Zeit erfolgt sehr oft in digitaler Form. Das analoge Messsignal wird dazu über einen Messwertumformer in ein sogenanntes "Normsignal" verwandelt und danach über einen Analog-Digital-Wandler digitalisiert.

Diese digitalen Daten werden dann als Datenbank bereit- gestellt und über ein Laptop, als Server, auf eine Internetseite übertragen. Mit einer entsprechenden Auswertungssoftware erfolgt dann die Darstellung der Momentanwerte und der Diagramme auf unserer Homepage (Messdaten).

Zur Digitalisierung verwenden wir den A/D-Wandler RedLab1408FS[1208FS] der Firma Meilhaus. Das Digitalisieren hat viele Vorteile. Der wichtigste Punkt ist die Speicherung und Weiterverarbeitung von Daten; ein digitales Signal kann man einfacher speichern und danach wieder abrufen, als ein analoges Signal. 

Die Überwachung einer Anlage muss so nicht mehr vor Ort geschehen, da durch das Digitalisieren der Werte, das Signal lange Strecken ohne Störungen zurücklegen kann. In großen Industrieanlagen wird diese Technik mittlerweile sehr häufig angewendet. In der Großindustrie werden die Daten zur Steuerungs- und Überwachungszentrale geleitet, die die einzelnen Prozessabläufe, mehrerer Anlagen, vollständig überwachen können.

PT 100 Temperatursensor
Temperatursensor PT 100 (Datenblatt: Bild anklicken)

1.1 PT 100 Temperatursensor

Pt100-Sensoren sind Temperaturfühler, die auf der Widerstandsänderung von Platin unter Temperatureinfluss basieren. Es handelt sich um Widerstandsthermometer, und zwar um Kaltleiter (PTC).

Zur Temperaturmessung im Bereich 200 °C bis 850 °C wird häufig die elektrische Widerstandsänderung eines Platindrahtes oder einer Platinschicht genutzt. Die Platin-Temperatursensoren werden durch ihren Nennwiderstand Ro bei einer Temperatur von 0 °C charakterisiert. Gebräuchliche Typen sind:

  • Pt100 (R0= 100 Ohm)
  • Pt200 (R0= 200 Ohm)
  • Pt500 (R0= 500 Ohm)
  • Pt1000 (R0= 1 kOhm)

Bei einem Temperaturabfall verringert sich der Widerstandswert, bei einer Temperaturzunahme erhöht er sich. Diese Widerstandswerte können dann von Messwertumformern weiter verarbeitet werden.

MCR-Temperaturmessumformer
MCR-Temperaturmessumformer (Datenblatt: Bild anklicken)

1.2 MCR-Temperaturmessumformer

Der MCR-Temperaturmessumformer setzt die Messwerte des Pt100-Sensors in analoge Strom- oder Spannungswerte um, die sogenannten Normsignale.

Dazu wird das Sensorsignal des Pt100-Temperatursensors

  • verstärkt
  • linearisiert
  • moduliert
  • und mittels Übertrager galvanisch entkoppelt

 

Das potentialgetrennte Signal wird danach

  • demoduliert
  • gefiltert 
  • und verstärkt am Ausgang als Normsignal zur Verfügung gestellt.
  • Das Normsignal ist frei wählbar: In der Regel 0 V - 10 V oder 0 mA - 20 mA.

 

Der Sensorkreis ist damit vom Auswertkreis und der Hilfsenergie sicher entkoppelt, wodurch eine gegenseitige Beeinflussung von untereinander verketteten Messkreisen vermieden wird.

2. Analog-Digital-Wandler

2.1 Grundprinzip eines A/D-Wandlers

Ein A/D-Wandler bekommt ein analoges Signal (Gleichspannung)  von z. B. 0-10V von einem Operationsverstärker bzw. einem Messwertumformer (Normsignal). Diese Gleichspannung wandelt er in ein digitales Signal um.

Das Modul 1408FS hat eine Auflösung von 14 Bit, bei 4 differentiellen Eingängen und eine Auflösung von 13 Bit, bei 8 Single-Ended Eingängen.

Da wir 8 Single-Ended Eingänge benutzen haben wir eine Auflösung von 13 Bit.

Unser Modul löst das analoge Signal also in

       21+22+23+24+25+26+27+28+29+210+211+212+213  16383 unterschiedliche Stufen auf.

Ein analoges Signal von 10 V wird damit in 16383 Stufen zerlegt, mit 0,61 mV je Stufe.

 

Das vollständige Blockschaltbild des RedLab 1408FS

Schema des A/D Wandlers

2.2. Umwandlung der 8 Kanäle
In die Solaranlage der HEMS wurde ein 1408FS und ein 1208FS Analog-Digital-Wandler von RedLab  eingebaut. Diese besitzten 4 differentielle Kanäle oder 8 Single-Ended Eingänge. Unser A/D-Wandler wird mit 8 Single-Ended Eingängen betrieben.
Zur Genauigkeit ist zu sagen, dass das Modul 1408FS mit 13 Bit und das Modul 1208FS mit 11 Bit auflöst. Damit können Spannungen von 0 bis10V in 16383 bzw. 4095 Stufen aufgelöst werden.

Der A/D-Wandler bekommt die Signale von einem Operationsverstärker. Dieser ist an der zu überwachenden Leitung angeschlossen und übernimmt das Umwandeln von z.B. 230V Wechselspannung in eine Größe von 0V-10V Gleichspannung für den A/D-Wandler. Diese Spannungen werden nach der Umwandlung des A/D-Wandlers über ein USB Kabel Digital zu einem Computer geleitet.

   

2.3 Zuordnug der Messwertumformer zu den A/D-Wandlern Red Lab 1408FS bzw. 1208FS

3. Die Softwarekomponenten und ihre Funktionen

Die Software teilt sich in zwei Teile: Den lokalen - auf dem Laptop im Labor und den Serverteil auf der Schulhomepage. Der Serverteil wiederum ist ebenfalls geteilt: In das Perl-Script, das die Daten empfängt und wieder ausgibt und in ein HTML-Dokument, welches auf der Website angezeigt wird. Lokal können zusätzliche Kalibrierungskomponenten als DLLs erstellt werden.

Die Einstellungen für das Programm sind in Allgemeines, Upstream und Error unterteilt. In der Rubrik Allgemeines sind alle wichtigen Grundeinstellungen enthalten, auch die für das Abfrageintervall. Upstream umfasst die Einstellungen, welche für die Verbindung zum Server gebraucht werden. In der Rubrik Error kann man einstellen, welche Fehler und Warnungen protokolliert werden sollen. Die Einstellungen werden in den Anwendungsdaten gespeichert (Siehe 4.1). Mit dem Löschen dieser Einstellungen und des Autostarteintrages (Start-Alle Programme-Autostart-Datenupload) ist das Programm deinstalliert.

4. Bedienung der lokalen Software

4.1 Installation und Anschluss der AD-Wandler (Boards)

Das Programm DatenUpload.exe bedarf keiner Installation. Es kann an jedem beliebigen Ort gestartet werden. Jedoch muss vor dem ersten Start der Ordner mit den Anwendungsdaten angelegt werden; in diesem muss sich die Datei Einstellungen.ini befinden, diese braucht jedoch keinen Inhalt. Der Pfad dieser Datei ist dann:

*:/Dokumente und Einstellungen/ANGEMELDETER BENUTZER/Anwendungsdaten/DatenUpload/Einstellungen.ini

Nun sollte das Programm starten – die Installation des Treibers (mccdaq – Instacal und UniversalLib) ist vorausgesetzt. Standardgemäß wird das Programm keine angeschlossenen Boards erkennen. Diese müssen zuvor mit InstaCal konfiguriert werden. Es ist hierbei notwendig, eine Seriennummer einzugeben (Es darf nicht die gleiche Nummer doppelt verwendet werden).

4.1.1 Autostart

Seit wegen einem Kurzschluss das Ersatzlaptop eingerichtet wurde, gab es ein merkwürdiges Treiberproblem: Nach dem Hochfahren waren die angeschlossenen Boards einige Zeit nicht verfügbar. Um dies zu beheben, gibt es im Autostarteintrag für das Programm unter anderem die Möglichkeit, eine Startverzögerung einzustellen: Einstellungen-Allgemein-Start/Stop-Programm beim Systemstart ausführen. Geben Sie hier im Feld Parameter die Entsprechenden Einstellungen an (Trennung durch Leerzeichen):

-start Nach dem Programmstart wird die Messwertabfrage gestartet
-connect Nach dem Programmstart wird die Verbindung zum Server aufgebaut
-hide Das Programm wird nach dem Start versteckt
-restart Das Programm startet so schnell, wie möglich, ohne den Ladebildschirm anzuzeigen
-timeout Das Programm wartet vor dem Laden des Treibers für eine einstellbare Zeit (Beispiel: -timeout 1000 für eine Sekunde warten)

4.1.2 Herunterfahren

Weil der Laptop nicht für einen Dauereinsatz konzipiert ist, ist es wichtig, dass von Zeit zu Zeit ein Neustart vorgenommen wird. Andernfalls können aufgrund von Speicherfehlern unerwünschte Fehler auftreten. Deswegen ist in der Software eine Funktion zum automatischen Herunterfahren enthalten: Öffnen Sie die Einstellungen und geben Sie in der Rubrik allgemein unter Start/Stop eine Uhrzeit (hh:mm) ein, zu welcher das System herunterfahren soll. Das Hochfahren muss über andere Wege gewährleistet werden; zum Beispiel über ein WakeOnLan-Server.

4.2 Intervall

Das Intervall bezeichnet das Abfrageintervall. Auch dieses kann in den Einstellungen festgelegt werden. Es darf jedoch nicht kürzer als 200ms sein. Mit jedem Intervall werden alle Messwerte abgefragt und (falls dies so eingestellt ist) für das Upload zum Server eingetragen. Der Intervall-Timer verfügt über eine spezielle Funktion, die alle Abfragen auf möglichst ganzzahlige Zeiten legt. Beispiel:

Das Intervall ist auf zwei Minuten eingestellt. Die Abfrage der Messwerte soll also um 12:00 Uhr, 12:02 Uhr, 12:04 Uhr stattfinden, nicht aber um 12:00:35 Uhr, 12:02:35 Uhr, 12:04:35 Uhr oder um 11:59 Uhr, 12:01 Uhr, 12:03 Uhr.

Des weiteren ist eine spezielle Optimierung eingebaut, welche die Abfragedauer der letzten Messwerte misst und die Abfrage der Nächsten um die Hälfte davon nach vorne verlegt, sodass die Messwerte möglichst exakt in den erwünschten Zeitpunkten erfasst werden.

 

4.3 Kalibrierung

Die Kalibrierung ist der wohl umfangreichste Teil der Software. Die Werte, die die AD-Wandler liefern sind positive Ganzzahlen (Integer). Diese entsprechen den Spannungen (+/- 10V), die an den Kanälen anliegen. Ein bei einem zwölf-bit-Wandler kann der Eingangswert maximal [(2E+12)-1=4095] sein. Null liegt in der Mitte, also bei 2048

Mit einem Klick auf den Entspricht-Button eines Kanals kann dieser Kalibriert werden. Es öffnet sich das Kalibrierungsfenster (Sei W der kalibrierte Wert und E der Eingangswert des Wandlers (Integer)):

Die Idee der Kalibrierung ist die, dass man eine Funktion W(E) aufstellt. Diese verläuft durch unterschiedliche Kalibrierungspunkte. Diese stellen eine Verknüpfung zwischen dem Eingangswert und dem wirklichen Wert dar (Beispiel: 8940 entspricht 5V). Die Art der Kalibrierung gibt an, wie zwischen diesen Werten interpoliert werden soll. Da sich die Punkte auch im Graphen-Fenster verschieben lassen, wird diese Methode schnell klar, wenn man die unterschiedlichen Verfahren durchprobiert:

nächstliegend Es wird immer der nächst kleinere, nächstliegende oder nächst größere Kalibrierungspunkt als Wert verwendet. Eine Auswahl zur Rundungsart wird angeboten, wenn Sie dieses Verfahren wählen. Geeignet für diskrete Werte (z.B.Ein/Aus, Schalterstellungen, etc.)
linear Dies ist die wohl am häufigsten verwendete Kalibrierung. Die Kalibrierungspunkte werden linear verbunden. Tipp: Werte, die zum Beispiel nicht kleiner als Null werden können, können bei Null mit einem zusätzlichen Kalibrierungspunkt abgeschnitten werden. Dies verhindert, dass aufgrund von Messungenauigkeit diese Werte doch kleiner als Null werden können.
(Polynom-)Funktion Bei Wahl dieser Option wird ein Eingabefeld für eine Funktion angeboten. Hier kann man unabhängig der Kalibrierungspunkte eine Funktion eingeben; diese muss jedoch ganz rational sein. Die Funktion kann auch automatisch per Gauss-Algorithmus bestimmt werden, so dass sie durch die Punkte geht. Hochgradige Funktionen schweifen jedoch oft zu sehr ab, um als Kalibrierung zu fungieren.
Splines Die Splines sollen das Problem des Abschweifens umgehen, indem nur Teilfunktionen durch je zwei Punkte gebildet werden, die mit gleicher Steigung abschließen. Es handelt sich hierbei jedoch um keine echten, kubischen Splines
DLL Alternativ kann auch eine eigene DLL zum kalibrieren verwendet werden (Siehe 4.3.1)

 

Der eigentlichen Kalibrierung voraus geht die Prüfung auf Überlauf. Bei dieser wird geprüft, ob sich die Messwerte innerhalb der angegebenen Grenzen (Min und Max) bewegen. Falls diese Prüfung unerwünscht ist, kann als Untergrenze Null und als Obergrenze der maximale Eingangswert des Wandlers eingegeben werden. Wenn ein Eingangswert eine Grenze überschreitet, wird er auf diese zurückgesetzt. Alternativ kann die Überlaufrotation eingeschaltet werden. In diesem Fall wird der Wert beim überschreiten der Obergrenze auf die Untergrenze gesetzt und beim unterschreiten der Untergrenze auf die Obergrenze. Dies kann zum Beispiel beim messen einer Windrichtung hilfreich sein (Für eine Richtung (Winkel) gilt: 370° = 10° = -350°). Der Wert im Feld Intervallübertaktung gibt an, wie viele Messwertabfragen zusätzlich, zwischen den Intervallen, durchgeführt werden sollen und ob deren Zeitpunkte zufällig oder kontinuierlich sein sollen. Mit dem setzen dieser Option wird die Zeitangabe der Messwerte ungenau, da sich diese nun aus dem arithmetischen Mittelwert vieler, zu unterschiedlichen Zeitpunkten gemessener Messwerte, berechnen. Allerdings kann dies die Genauigkeit der Messung steigern, wenn zum Beispiel Induktionen in den Leitungen das Ergebnis verfälschen.

4.3.1 Eigene DLL zur Kalibrierung schreiben

Wenn die angebotenen Methoden zur Messwertkalibrierung nicht ausreichen sollten, kann eine eigene DLL geschrieben werden. Diese erhält über ein spezielles Interface Zugriff auf relevante Funktionen und Werte im Programm. Eine DLL kann zum Beispiel zum Messen der mittleren Änderungsrate genutzt werden, wie dies im Beispiel Wind der Fall ist, oder auch eine Brücke zwischen zwei Programmen darstellen. Wenn ein Kanal von einem anderen Programm abgefragt werden soll, kann dieses nicht selbst darauf zugreifen, weil die Treiber der AD-Wandler anscheinend nicht damit klar kommen, gleichzeitig von unterschiedlichen Programmen geladen zu werden. Deswegen sind weitere Interfaces angelegt (siehe 4.4). Folgender Quellcode kann als Vorlage für die DLL (AD-Wandlung) genutzt werden:

Die Unit Callback befindet sich im Codeverzeichnis der Hauptanwendung, welches als Quelltextverzeichnis hinzugefügt werden muss. In der Unit Callback befindet sich das Interface. Neben den drei exportierten Funktionen der DLL gibt es auch eine Eval-Funktion in der Anwendung, welche von den DLLs aufgerufen werden kann. Als Variablentransfer wird ein Pointer auf einen Array of Byte übergeben. Dieser kann von der Anwendung interpretiert werden und zur Übergabe von Werten aus der Anwendung an die DLL genutzt werden. Da die Unit Callback von allen DLLs verwendet wird, dürfen die darin verwendeten Funktionen nicht verändert werden, jedoch können gefahrlos neue erstellt werden, die das Interface erweitern. Alle  bisherigen sind folgender Maßen zu verwenden:

procedure GetInterval Erwartet eine Methode vom Typ procedure (NewInterval : Cardinal); diese wird beim Aufruf von GetInterval und bei jeder Änderung des Abfrageintervalls aufgerufen und erhält das (neue) Intervall.
procedure GetOverclockingAccess Erwartet eine Methode vom Typ procedure(NewTime : TdateTime); und ein Pointer. Die erwartete Methode wird immer dann aufgerufen, wenn nach einer Messwertabfrage die eingeschobenen Zeitpunkte zwischen den Abfragen berechnet werden; NewTime ist hier der Zeitpunkt dieser letzten Messwertabfrage. Der Pointer wird auf einen Array of TOverclockTimes gesetzt. Dieser enthält die eingeschobenen Zeitpunkte (Null, wenn dieser Zeitpunkt nicht beachtet werden soll).
property CalibOnRequest Wird diese Eigenschaft auf true gesetzt, werden alle Kalibrierungen, also auch die der eingeschobenen Zeitpunkte, sofort durchgeführt und nicht erst bei der Mittelwertberechnung vor dem Upload. Dies ist vor allem dann wichtig, wenn die eingeschobenen Zeitpunkte unabhängig vom Intervall sind. Jedoch muss sich die DLL so selbst um das anhalten der Abfrage kümmern (Siehe GetStarted)
function GetStarted Gibt true zurück, wenn die Messwertabfrage gestartet ist
function GetConnected Gibt true zurück, wenn die Verbindung zum Server gestarted ist
procedure HTTPSend trägt die übergebene Zeichenkette für das Upload ein. (Siehe auch 4.5.1)
procedure ErrorReport Erwartet die Art und den Inhalt eines zu meldenden Fehlers bzw. Hinweises. Art = 0, für Meldung; 1 für Hinweis; 2 für Warnung; 3 für Fehler.
function GetPrecision Gibt die für diesen Kanal eingestellte Rundungsgenauigkeit zurück

 

Die Funktion Create wird nach dem Laden der DLL aufgerufen, Free vor dem Freigeben. Auch beim Ändern der Kalibrierung wird die DLL neu geladen. Die Funktion Calib wird zum Kalibrieren der Messwerte aufgerufen. Flag ist hierbei die Nummer des entsprechenden, eingeschobenen Zeitpunktes (-1 für Hauptintervall). Das Resultat ist ein Pointer auf das erste Zeichen einer Zeichenkette (AnsiString). Diese wird unverändert in das Upload eingetragen. Deswegen dürfen darin nur für die URL zulässige Zeichen verwendet werden; ?, #, % und & sind ausgeschlossen, da diese schon für die Formatierung des Upload-Strings verwendet werden. Es gelten hier die Regeln zum Upload (Siehe 4.5.1). Mit diesem Interface können die Abfragezeitpunkte auch komplett unabhängig vom Hauptintervall gewählt werden. Ignorieren Sie hierfür das Flag -1 (bzw. verwenden Sie es nur zur Erzeugung der Rückgabezeichenkette), setzen Sie CalibOnRequest auf true und fügen Sie einen eigenen Abfragezeitpunkt ein, welcher mit jeder Abfrage dieses Punktes auf den nächsten, gewünschten Zeitpunkt gelegt wird.

4.4 Andere Kanaltypen nutzen

Das in 4.3.1 erklärte Interface steht nur für AD-Kanäle zur Verfügung. Je nach Board-Typ gibt es auch DA- oder Counter-Kanäle. Die Verwendung anderer Kanaltypen ist im Quelltext bereits angelegt und wurde mit TDAChannel exemplarisch durchgeführt. Die Deklaration von TADChannel und TDAChannel befindet sich in der Datei Fenster.pas. Hier finden Sie auch Hinweise, wo im Quelltext neue Kanaltypen extra behandelt werden müssen. Wenn ein neuer Typ nur als Interface zur Verwendung in anderen Programmen verwendet werden soll, sollte dies reichen. Andernfalls müssen Funktionen, wie Abrufen oder DoTimer bearbeitet werden, damit die Abfragen der neuen Kanäle mit dem Intervall synchronisiert und für das Upload eingetragen werden können. Ein einfaches Interface für DA-Kanäle ist bereits angelegt. Dieses besteht nur aus Create und Free, wobei Create folgender Maßen deklariert ist:

procedure(Params : PChar; Callback : Pointer; Board,Channel : word) Callback ist ein Pointer auf eine Methode folgenden Typs: procedure(Board,Channel : word; Value : integer) Diese leitet den übergebenen Wert (Value) direkt an den entsprechenden DA-Kanal weiter. Das übernehmen des Memmorymanagers ist in diesem Interface nicht notwendig.

4.5 Das Upload

Das Upload ist ein rein HTTP-basiertes System. Auf dem Server befindet sich ein Script, das den URL-Anhang eines HTTP-Requests verarbeitet. Die Arbeitsweise dieses Systems ist noch die gleiche, wie in Version 1.0 und deswegen in der Dokumentation zu 1.0 näher erklärt. Folgende Einstellungen sind für die Verbindung zum Server notwendig: Öffnen Sie die Einstellungen, Reiter Upload:

4.5.1 Formatierung des Upload-Contents

Weil das Upload über HTTP-Request abgewickelt wird, dürfen sich in den zu übertragenden Daten nur in URLs gültige Zeichen aus dem ASCII-Code befinden. ?,#,% und & werden bereits für die Formatierung der Zeichenketten verwendet und dürfen nicht, bzw. nur gezielt verwendet werden. Es steht jedoch eine Umsetzung aller ASCII-Zeichen in Dezimalwerten zur Verfügung: %xxx ist die Umschreibung. Das xxx ist eine immer dreistellige Dezimalzahl, welche die Nummer des an dieser Stelle einzusetzenden Zeichens im ASCII-Code repräsentiert. Ein- und zweistellige Nummern sind mit 00x, bzw. 0xx einzutragen. Der so formatierte Code wird auf dem Server wieder zurückverwandelt. Soll zum Beispiel ein Und-Zeichen bis zur Webseite übertragen werden, gibt es ein Problem, weil der Server die Umschreibung wieder zurück verwandelt und das Und-Zeichen dann die Formatierung zerstört. Also ist auch auf der Webseite ein script aktiv, das die Zeichen umsetzt. Es muss also das %-Zeichen erneut umschrieben werden (Beispiel: Ä = Ä = %038Auml; = %037038Auml;). Wann immer Sie Werte eintragen, die über das Upload gesendet werden, muss diese Umschreibung beachtet werden. Das gilt zum einen für Namen und Einheiten von Kanälen und zum anderen im DLL-Interface für den Rückgabewert von Calib. Für die Übertragung des Javascriptes wird diese Umformatierung automatisch gemacht. Für weitere Informationen lesen Sie die Dokumentation zu Version 1.0 / 1.2. In Version 1.0 war die Doppelformatierung des %-Zeichens noch nicht enthalten.

5. Die Seversoftware

5.1 Installation der Serversoftware

Zum Installieren des Systems auf dem Server müssen alle Daten im Ordner Server hochgeladen werden. Dabei ist zu beachten, dass im Zielordner CGI (Perl) ausgeführt werden kann. Außerdem muss dieser über HTTP erreichbar sein. Sollte es notwendig sein, das Perl-Script in einem anderen Ordner als die HTML-Datei abzulegen, so kann dies getrennt werden: Messdaten.pl + Settings und index.html + Images + Script. Das Perl-Script ist für Linux-Server ausgelegt, kann aber leicht, durch ändern der ersten Zeile (Siehe Kommentar), für Windows-Server umgeschrieben werden. Im Ordner Settings wird unter anderem auch das Passwort gespeichert. Dieses ist in der Datei Settings.dat in Textform gespeichert und muss vor dem Upload eingegeben werden. Beispiel:

Password=HfefwkHGQezWrhfj

Wichtig ist, dass in dieser Datei KEIN Absatz ist, auch nicht am Ende. Der Grund hierfür ist die unterschiedliche Absatzformatierung. Während Windows einen zwei-Byte-Absatz (#13#10) verwendet, besteht dieser auf Linux nur aus einem Byte (#13). Da auf dem Server Linux läuft, führt ein zwei-Byte-Absatz zu unerwünschten Fehlern beim verarbeiten dieser Datei. Um zu verhindern, dass das Passwort im Internet gelesen werden kann, muss die Dateiberechtigung für alle Dateien im Ordner Settings auf 600 gesetzt werden. Dadurch wird der Zugriff von Außerhalb verweigert. Die Datei index.html enthält einen Website-Ausschnitt, welcher nur die Stylesheets der Homepage importiert. Ansonsten ist diese HTML-Site vollkommen autonom und wird per IFRAME in die Website eingebunden. Es wäre prinzipiell auch möglich, den HTML-Code in Typo3 einzufügen, aber dort erhält dieser keinen Zugriff auf den HTML-Header. Es wird jedoch unbedingt empfohlen, den Aufruf der Funktionen, welche die Daten herunterladen, vom Header der HTML-Datei aus durchzuführen. Dies bedingen unterschiedliche Sicherheitsbestimmungen für Javascript, welche unter anderem verhindern, dass ein Script Daten von fremden Domains herunterlädt. Es kann deswegen, gerade in älteren Browsern, auch vorkommen, dass diese HTML-Seite keine Verbindung zum Server aufbauen kann. Eingebunden im IFrame hat dies bisher jedoch immer funktioniert.

5.2 Aufbereitung der Messwerttabelle

Die Datei Script/Settings.js ist exemplarisch so aufgebaut:

In diesem Abschnitt können Sie alle wesentlichen Einstellungen zur Anzeige vornehmen. Dies sind eigene Befehle zur Aufbereitung der Tabelle. Grün markiert sind eigene Funktionen, welche später vom Messdatensystem aufgerufen werden. MessdatenURL ist die Adresse der Messdaten.pl. Diese sollte als absoluter Pfad angegeben werden. Es stehen (blau markiert) folgende Befehle zur Aufarbeitung der Tabelle zur Verfügung:

AddVirtualValue Fügt einen virtuellen Kanal hinzu. Virtuelle Kanäle enthalten Messwerte, welche nicht hardwareseitig gemessen wurden, sondern softwareseitig berechnet werden. Erwartet wird der Name das Kanals, ein zu interpretierender Ausdruck, welcher dessen Wert liefert und die Einheit des Kanals.
CreateGroup Fügt Kanäle zu einer Gruppe zusammen. Erwartet den Namen der Gruppe, sowie eine Liste der darin enthaltenen Kanäle. In der Liste werden die Kanäle mit Komma getrennt; es darf kein Leerzeichen nach dem Komma stehen.
HookValueOutput Erwartet einen zu hookenden Kanal und eine Funktion. Die Funktion wird immer dann aufgerufen, wenn der Kanal einen neuen Wert erhält; der Wert wird der Funktion übergeben (siehe oben).Es wird dann der Rückgabewert der Funktion in die Tabelle geschrieben
LinkChannel Erwartet den Namen eines Kanals und eine URL. Verlinkt diesen Kanal mit der URL. Das Class-Attribut des Links ist ChannelLink.
ValOf Die Funktion ValOf erwartet den Namen eines Kanals; gibt den Wert dieses Kanals zurück
StrToFloat Versucht, eine Zeichenkette als Zahl zu bearbeiten. Falls die Zeichenkette eine gültige Zahl ist, wird in der Variable LastPrecision die Anzahl signifikanter Stellen des Wertes gespeichert.
LastPrecision enthält die Anzahl signifikanter Stellen des letzten Wertes, der mit StrToFloat umgewandelt wurde. Wenn eine Funktion von HookValueOutput aufgerufen wird, so ist in dieser Variable immer die Genauigkeit des entsprechenden Kanals gespeichert.

6. Die mySQL Datenbank

Als ich mit der Übertragung der Daten von der Solaranlage zum Computer und die Aufbereitung mit dem Programm LabView fertig war, kam der für mich schwierigste Teil dieses Projekts, die Daten in eine mySQL Datenbank zu bekommen. Da ich vorher noch nie etwas mit Datenbanken, html, SQL und Ähnlichem gehört und zu tun hatte, fiel es mir sehr schwer, die richtigen Verknüpfungen und Befehle in meine bestehende Programmierung, in LabView, einzubauen. Nach längerer Auseinandersetzung mit der Thematik, habe ich eine mySQL5 Datenbank angelegt, und in LabView diese angegeben. Diese ist folgendermaßen aufgebaut:

Es gibt 10 Spalten.

Die erste Spalte heißt ID:
Diese Spalte zählt immer eine Zahl höher, somit hat man immer die Zeilenanzahl in der ersten Spalte stehen.

Die zweite Spalte heißt Date:
Diese Spalte gibt das Datum in Sekunden, seit 1979, an.

Die Spalten 1-8 heißen Data1-8:

In diese Spalten werden die einzelnen Messdaten geschrieben. Jeder Messwert hat hierbei seine eigene Spalte, in der untereinander die einzelnen Werte im Verlauf der Zeit eingeschrieben werden.

LabView schickt bei jedem Packet eine Befehlsreihe. Diese gibt genau an, wo welcher Wert zu stehen hat.

insert com_measurement (date,data1,data2,data3,data4,data5,data6,data7,data8)

Der Befehl  „insert com_measurement“ sagt, alles was danach folgt, soll in die Datenbank „com_measurement“ eingetragen werden.

Das in Klammern stehende gibt die einzelnen Spalten an, in welcher Reihenfolge die Werte, der darauffolgenden Befehlsreihe, eingetragen werden sollen.

Value ( Wert1,Wert2,Wer3,Wert3,Wert5,Wert6,Wert7,Wert8)

Dies sind die Werte, welche mit dem Befehl „Value" von der Datenbank richtig Interpretiert werden. Die Datenbank ordnet jetzt die einzelnen Werte den oben genannten Spalten zu.

Die MySQL-Datenbank

7. Quellen

Html lernen:
www.html-seminar.de

PHP lernen:
www.php-einfach.de/einf_mysql.php

AD Wandler:
de.wikipedia.org/wiki/Analog-Digital-Umsetzer

LabView lernen:
National Instruments Corporation LabView Grundlagen
www.ni.com

Bedienungsanleitung ME-RedLab 1408FS

Anlagen

Klemmbrett verdrahtung

Verdrahtung der Photovoltaikanlage
Verdrahtung in der Photovoltaikanlage

Verdrahtung des Moduls 1408FS

Verdrahtung des Moduls 1408FS
Verdrahtung des Moduls 1408FS für eine Großansicht anklicken