Ausgabe 25, September 1999

Lichtblick

Automatische Ausrichtung einer Solaranlage nach dem
momentanen Sonnenstand

Im Rahmen eines Seminars über den Einsatz von neuen Medien im Physik- und Technikunterricht ergaben sich für uns folgende Intentionen. Aufbauend auf der im Artikel “PDV über´s Netz” von den Herren Pötter und Bresges beschriebenen Infrastruktur war unsere Zielsetzung die Entwicklung einer Software zur Ansteuerung und automatischen Ausrichtung der beschriebenen Solaranlage in Richtung einer Lichtquelle. Ferner sollte das Projekt auf Tauglichkeit zum Einsatz in der Schule geprüft werden. Hier werden kurz die in der zur Verfügung stehenden Zeit zustande gekommenen Ergebnisse und aufgetretenen Probleme dargestellt.

Vorhandene Infrastruktur

Das Solarmodul besteht aus Solarzellen der Firma AEG, die auf einem mittels Elektromotor drehbar gelagerten Stativ angebracht sind. Es besitzt zwei Endabschalter, über die definierte Positionen (Links- und Rechtsanschlag) abgefragt werden können. Ferner können die Spannung der Solarzellen direkt und der Strom indirekt über einen Lastwiderstand gemessen werden.

Als Interface wird zur Verbindung der Anlage mit dem Rechner (Server) eine Modul-Bus Kombikarte mit jeweils 8 Bit digitalem Ein- und Ausgang und zwei analogen Messwerteingängen genutzt. Auf der Karte befindet sich ein A/D-Wandler, der die analogen Werte mit 8 Bit Auflösung erfasst. Der ansteuernde Rechner kann via Netzwerk bzw. Internet mit dem Interface über den Server kommunizieren.

Als Programmierumgebung stand uns MS Visual Basic 6.0 zur Verfügung. Die Softwarekomponente “Mod-bus1”, die die wichtigsten Befehle enthält, muss, um den Zugriff auf das Interface zu ermöglichen, zunächst in die Programmierumgebung integriert werden. Es folgt eine Erklärung der wichtigsten Befehle:

Modbus1.Ausgabe=”x”

steuert in unserem Fall Motor und Getriebe, wobei x eine Dezimalzahl zwischen 0 und 255 ist. Dieser Wert wird in eine Dualzahl gewandelt und als Steuerbitmaske an die Anlage weitergegeben (z.B. das 20 Bit schaltet den Motor an und aus, und das 22 Bit schaltet das Getriebe auf Rechtslauf, dann ist x = 20 + 22 = 5).

Modbus1.Eingabe

gibt hier die Stellung der Endabschalter für die Drehung weiter und läuft nach dem gleichen Prinzip wie oben. Hier wird jedoch eine Binärmaske in eine Dezimalzahl umgewandelt: Ein Schalter ist mit dem Bit 20 verbunden, der andere mit 21, dann ist der gelieferte Wert entweder 0 (kein Schalter), 1 (Rechtsanschlag) oder 2 (Linksanschlag)

Modbus1.Analogwert(x)

gibt die A/D-gewandelten Messwerte weiter (Strom und Spannung). x ist die Nummer des Analogeingangs (1 oder 2). Der Rückgabewert liegt zwischen 0 und 255 (8 Bit).

Modbus1.IP=”x”

verbindet Programmierrechner mit dem Server, wobei x die IP-Nummer des Servers ist.

Programmbeschreibung von “Solar”

Entstanden ist zunächst ein Programm, mit dem man die Anlage entweder manuell steuern oder automatisch das Leistungsmaximum erfassen und anschliessend anfahren kann. Das komplette Listing des Programms befindet sich in der online-Ausgabe dieser Zeitschrift. Die manuelle Steuerung läuft folgendermassen: Das Programm sendet den jeweiligen Drehbefehl über Modbus1.Ausgabe. Die Anlage beginnt sich zu drehen und stoppt dann, wenn der jeweilige Endabschalter gedrückt wird oder der Stopp-Button des Programms angeklickt wird. Damit die Modbus-Befehle zeitlich nicht zu dicht aufeinanderfolgen und so den TCP/IP-Stack überlaufen lassen, haben wir sie mit einer Warteschleife abgepuffert (siehe unten).

Klickt man auf Messwerte aufnehmen, dreht sich die Anlage zunächst bis an den Linksanschlag, um eine definierte Position zu haben. Dann erfolgt eine komplette Rechtsdrehung, während der jede halbe Sekunde (Timer1) die Messwerte aufgenommen und, zusammen mit dem Zeitpunkt Ü der Messung, in einem Array gespeichert werden. Da die Umdrehungsgeschwindigkeit der Anlage konstant ist, kann jedem Messzeitpunkt eine bestimmte Ausrichtung der Anlage zugeordnet werden.

Bei anschließendem Ausrichten wird in dem Unterprogramm ausrichten() das Leistungsmaximum im Array bestimmt. Da die derzeitige Position der Anlage bekannt ist – nämlich der rechte Endanschlag – lässt sich die Zeit, die die Anlage in Richtung des Maximums zurückdrehen muss, einfach ermitteln. Für diese Zeit ist der Timer2 verantwortlich, der die ermittelte Zeit als Timer-Intervall übergeben bekommt. Es bedurfte jedoch einer Korrektur, da auch bei der Messwertaufnahme Warteschleifen notwendig waren, die natürlich mitberücksichtigt werden müssen. Zur anschließenden Kontrolle kann auf “aktueller Messwert” geklickt werden.

Probleme bei der Durchführung

Während der Programmierung stellte sich als erstes Problem heraus, dass der Rechner die Modbus-Befehle viel schneller verarbeitet, als das Netzwerk sie weitergeben kann. Besonders bei Schleifen mit Abfragen lief schnell der Puffer des TCP/IP-Stack über. Nicht selten ist die gesamte Anlage “abgestürzt”. Mangels einer hinreichend genauen Zeitschleife ausserhalb des Visual Basic-Timers, haben wir uns mit einer eher primitiven Zählschleife beholfen (Wait-Prozedur). Besser wäre natürlich ein festes Zeitintervall, da man in Multitasking-Systemen die konstante Ablaufdauer mehrerer Zählschritte nicht garantieren kann.

Die erste Programmversion nahm während einer Drehung der Solarzelle aus der Ausgangsposition in Intervallen Messwerte für Strom und Spannung auf und errechnete hieraus die Leistung. Sobald die Differenz zwischen vorherigem und aktuellem Wert einen bestimmten Wert überschritten hatte, hielt der Motor an (bzw. fuhr einen Schritt zurück). Da trotz Verdunklung des Raumes, in dem die Anlage aufgestellt ist, durch Reflexionen und Abschattungen Nebenmaxima von beträchtlicher Höhe auftraten, die Leistungskurve also stark verrauscht war, richtete sich die Anlage nicht fehlerfrei aus. Bei der aktuellen Version nimmt das Programm alle Messwerte auf und kann im Anschluss daran den grössten Wert anfahren.

Ein weiteres Problem war die genaue Positionierung der Solarzellen. Die Anlage verfügt über keine Möglichkeit, bestimmte Positionen zu verarbeiten. Die Positionierung muss auf einer Zeitbasis (realisiert durch die Wait-Prozedur) nach vorheriger Nullpunktskalibrierung erfolgen. Diese Kalibrierung erfolgt, indem die Anlage solange nach links gedreht wird, bis der Endabschalter erreicht wird. In diesem Moment liefert die Abfrage von Modbus1.Eingang den Wert “1”.

Für jede Messwertaufnahme benötigt der Computer eine gewisse Zeit, die auch von der Netzauslastung abhängig ist. Das Problem, was sich hierbei ergibt, ist, dass die Zeit, die für die Messwertaufnahme benötigt wird, auch beim Ausrichten berücksichtigt werden muss.

Da wir die Möglichkeit haben, die Länge der Wait-Schleife immer neu zu definieren, benutzen wir diese als Zeitgeber für Länge der Rücklaufschritte. Der Wert ist allerdings rein empirisch festgelegt worden, und ist nicht für jeden Rechner einsetzbar. Hier bedarf es also noch der Verbesserung.

Didaktische Aspekte

Ein besonderes Augenmerk gilt – gerade uns Lehramtsstudenten – der Einsetzbarkeit solcher Systeme im Technikunterricht. Im Hinblick auf die Einbindung in den Unterricht an Allgemeinbildenden Schulen haben wir bereits gute Erfahrungen innerhalb eines Kommunikationsprojektes zwischen Schule und Universität gemacht, die Anlage wird bereits seit längerer Zeit im Technikunterricht der Mittelstufe und der gymnasialen Oberstufe an der Willy-Brandt-Gesamtschule Mülheim eingesetzt.

In den unteren Jahrgängen dient sie hauptsächlich dazu, den grundlegenden Aufbau von Informationsnetzen zu veranschaulichen, in Programmiersprachen einzuführen und auf Probleme der Telemetrie aufmerksam zu machen. Eine Solarzelle stellt hier ein interessantes und anschauliches Beispiel dar. Innerhalb eines Halbjahreskurses in der Oberstufe steht die Anwendung etablierter Methoden der Mess- und Regeltechnik für Optimierungsaspekte im Vordergrund.

Das vorliegende Modell eignet sich gut, Schulen via Internet Zugang zu entsprechenden Versuchsaufbauten, die nicht an jeder Schule vorhanden sind, zu ermöglichen. Das angeschlossene Experiment ist austauschbar, die Solaranlage ist hier nur exemplarisch.

Allerdings stellt sich bei jedem Experiment die Frage, ob es praktikabel ist, diese über das Internet zu betreiben, da die Kosten einer offenen Telefonleitung und die Probleme bei überlasteten Leitungen nicht unbeträchtlich sind.

Ausblick

Das vorgestellte Programm stellt eine noch zu überarbeitende Vorabversion dar.

Das vollständige Programm soll im Februar 2000 im Rahmen des Projektes “uni@schule” vorgestellt werden. An weiteren Anregungen, am besten in Form von e-mail an: telemet@technologie.uni-duisburg.de sind wird sehr interessiert.

Auf unseren Projektleitseiten http://technologie.uni-duisburg.de/COLIN/ werden wir Sie ständig über neue Entwicklungen informieren.

Siehe auch: Messen, Steuern, Regeln mit Modul-Bus Interfaces über das Internet, von Andrè Bresges und Markus Pötter 
Das Thema Messen und Steuern über das Internet hat sich inzwischen (Stand 2010) weitgehend durchgesetzt. Mit Interfaces von Modul-Bus wird der Zugang z.B. in dem Buch Messen, Steuern und Regeln mit TCP/IP  von Lars Gollub behandelt. Einen Überblick findet man hier: CompuLAB fernsteuern mit TCP/IP. Üblich sind inzwischen auch Lösungen mit Embedded PCs. Auch vernetzte Aufgaben wie die Beobachtung des Flugläms findet über das Internet statt: Deutscher Fluglärmdienst e.V.: www.dfld.de  

Zurück zum CompaS-Archiv
Zurück zur Startseite AK-Modul-Bus