|
||||||||||||||||||||||||||||||||||||||||||||||
Forschungsgebiete |
||||||||||||||||||||||||||||||||||||||||||||||
Home-AutomationDie meisten Haushaltsgeräte arbeiten isoliert für sich. Gesteuert werden sie manuell mit direkt am Gerät befindlichen Schaltern. Das ist in den meisten Fällen auch recht sinnvoll, bei manchen Geräten (besonders bei Geräten, die dauerhaft in Betrieb sind) ist es aber auch wünschenswert, sie fernzusteuern und deren Betrieb aufeinander abzustimmen. Hier setzt die Home-Automation an: Es wurden einige Systeme entwickelt, die eine Kommunikationsschnittstelle für Haushaltsgeräte zur Verfügung stellen. Mit speziell darauf abgestimmten Protokollen ist es möglich, Daten von Geräten abzufragen und ihnen Kommandos zu geben. So ist es möglich, z.B. mit einem PC im Haushalt gewisse Einstellungen vorzunehmen (Heizung, Kühlschrank etc.) und deren Daten zu verwalten und aufeinander abzustimmen. Auch zusätzliche Geräte wie z.B. ein TV-User-Interface (Set-Top-Box) können dies leisten. Auch eine Fernabfrage und -steuerung über Telefon oder Internet sind möglich. Die Geräte können aber auch untereinander Daten austauschen und ihren Betrieb aufeinander abstimmen (der Kühlschrank läuft nur an, wenn die Waschmaschine gerade nicht schleudert), auf diese Weise können hohe Spitzenlasten auf den Stromleitungen vermieden werden. Auch sicherheitstechnische Mechanismen können nun implementiert werden (das Bügeleisen schaltet sich ab, wenn das Haus verlassen wird oder das Telefon klingelt...). Als Kommunikationsmedium bietet sich in Neubauten ein zusätzlicher Zweidraht-Bus (Twisted Pair) parallel zu den Stromleitungen an, er dient dann auch gleichzeitig als Spannungsversorgung für die einzelnen Knoten. Für Altbauten, die mit Home-Automation aufgerüstet werden sollen, ist dies zu teuer, und es wurde ein System entwickelt, das die Daten direkt über die Stromleitungen schickt (Power-Line-Communication). Weiterhin sind Koaxialleitungen und auch Funk-Netze spezifiziert. ConvergenceDa Haushaltsgeräte meistens von unterschiedlichen Herstellern stammen, ist eins der wichtigsten Kriterien der Home Atomation die Kompatibilität. Aus diesem Grund werden die großen verschiedenartigen Systeme für die Home-Automation in Europa - EHS (European Home Systems), EIB (European Installation Bus), BatiBUS - demnächst zu einem gemeinsamen (konvergierten) Standard vereinigt unter dem Arbeitstitel "Convergence". JavaDie Programmiersprache Java, hat ihren Siegeszug über das Internet angetreten und dieses wenn auch nicht revolutioniert, so doch bereichert. Die grundlegenden Konzepte von Java lassen sich mit zwei Worten beschreiben: objektorientiert und plattformunabhängig. Da Java als neue Sprache angelegt wurde (wenn auch mit einer stark an C angelehnten Syntax), war es möglich, das objektorientierte Konzept ohne Rücksicht auf Rückwärtskompatibilität konsequent umzusetzen: es ist nicht mehr möglich, nicht-objektorientiert zu programmieren. Die virtuelle Java-MaschineDie Plattformunabhängigkeit wurde folgendermaßen gelöst: es gibt zwei Programme: den Compiler, der den Quelltext in einen so genannten Bytecode übersetzt, und einen Interpreter (die virtuelle Maschine), der den Bytecode ausführt. Die virtuelle Maschine ist also das einzige Element von Java, das abhängig ist von der Rechnerplattform. Eine grundlegende Eigenschaft der JavaVM ist das Laden und Binden der Java-Klassen (so heißen die einzelnen Java-Programmteile, also ein Satz von Daten und Methoden, die als Bytecode vorliegen) zur Laufzeit. Auf diese Weise ist es möglich, verschiedene Programmteile (die auch von unterschiedlichen Entwicklern stammen können) von unterschiedlichen Stellen zu laden (so z.B. auch über Netzwerke). Das Problem bei der Entwicklung im Bereich der Home-Automation ist zur Zeit das folgende: für jedes Gerät muss die Software individuell angepasst werden. Jeder Hersteller von Haushaltsgeräten hat seinen "Lieblingsprozessor", und falls eine Datenschnittstelle vorgesehen ist, so sind die Protokolle in der Regel unterschiedlich. Auch die Anpassbarkeit an verschiedene Steuerungskonzepte (PC, TV oder Telefon) kann einen nicht unwesentlichen Programmieraufwand bedeuten. Java bietet nun mit der Plattformunabhängigkeit die Möglichkeit, diesen Programmieraufwand auf ein einziges Mal zu beschränken. Zudem bietet Java die Möglichkeit der objektorientierten Home-Automation. Jeder Hersteller kann seine Schnittstelle in eine Java-Klasse einbetten, und diese wird dann mit jedem Home-Automation-Knoten zusammenarbeiten. Java und Home-AutomationDa Systeme für die Home-Automation möglichst klein und einfach zu halten sind (so ist der Einbau z.B. in Lichtschalter oder Steckdosen vorgesehen), sich der Energieverbrauch je Kontrolleinheit in Grenzen halten soll und auch der Kostenfaktor eine Rolle spielt, sind als Zielsysteme 8-Bit-Mikrocontroller vorgesehen. Daher ist es zunächst einmal erforderlich, eine funktionsfähige JavaVM auf einem 8-Bit-Mikrocontroller zu implementieren. Da nun die Ressourcen auf einem derartigen Mikrocontroller stark eingeschränkt sind (das betrifft sowohl flüchtigen und nichtflüchtigen Speicher als auch die Rechenleistung), ist die JavaVM stark auf das Notwendigste zusammenzukürzen. Andererseits ist ein Mikrocontroller in der Regel eng an eine umgebende Hardware gebunden. Er hat die Aufgabe, auf Signale an seinen I/O Pins zu reagieren und daraufhin Signale abzusetzen. Auch hat ein Mikrocontroller in der Regel Zusatzeinheiten (Timer, Schnittstellen, Watchdog, etc.), deren Kontrolle zusammen mit den I/O-Pins in die JavaVM integriert werden muss. Da der Controller in unterschiedlichen Umgebungen arbeiten kann, ist die Konfiguration der JavaVM per Software erforderlich. Es ist auch wünschenswert, die Entwicklung von Software für die JavaVM möglichst einfach zu gestalten. Es soll möglich sein, das Java Programm mit einem standardmäßigen Java-Entwicklungswerkzeug (z.B. JDK von Sun)zu entwickeln und genauso auf dem PC / der Workstation laufen zu lassen, wie auf dem Mikrocontroller. ProjekteZiel war es, die Entwicklung von Java-Applikationen auf einem bestimmten 8-Bit Controller zu vereinfachen und auf verschiedenen Controllern zu vereinheitlichen. Dazu befinden sich zum einen Java-Klassen für die Controller mit hardwareunabhängigen Programmierschnittstellen und zum anderen Hilfswerkzeuge zur Entwicklung der Anwendungen für die Controller auf einem Entwicklungsrechner in der Entwicklung. Letzteres umfasst eine integrierte Oberfläche für die einzelnen Tools: Code-Bibliotheken, native Interface, Simulator, Optimizer und Downloader bzw. ROMizer. Auch die JavaVM selbst wird weiterentwickelt, z.B. wird gegenwärtig die Anbindung von Java-Debuggern ermöglicht. Im einzelnen wurden bereits folgende API-Klassen implementiert: GPIO zum Setzen und Abfragen von einzelnen elektrischen Signalen, ADC zum Auslesen von Analog-Werten, PWM zur automatischen Generierung von PWM-Signalen (z.B. zur Steuerung oder für Tongeber), Display für einfache Ausgaben auf einem Grafik-Display, Keyboard zur Abfrage verschiedener Tastaturen (Matrix, Analog etc.), I2C zum Steuern weiterer ICs, die mit dieser Schnittstelle ausgestattet sind, RTC ist eine Anbindung eines Uhrenchips, Resource für einen Read-Only-Dateizugriff, Flash um einen wiederprogrammierbaren Speicher zu bedienen, RS232 für eine einfache bidirektionale Kommunikation, CAN zur Anbindung des CAN-Bussystems, Management für interne Funktionen, die u.a. die VM beeinflussen, Download um PC-gesteuert neue Anwendungen auf ein Controller-Modul zu laden und noch vieles mehr. Darüber hinaus gehen weitere Klassen, die eine höhere Abstraktionsebene bei der Ansteuerung der Hardware bieten, z.B. ein Flash-File-System oder grafische Komponenten für das Display (Vole). Eine weitere Besonderheit der JavaVM ist eine rudimentäre Echtzeit-Unterstützung. Gerade im eingebetteten Steuerungssektor kommt es z.B. bei Regelungsalgorithmen immer wieder auf eine genaue Abfolge von Programmsequenzen mit festgelegten Zeitrahmen an. Die Programmiersprache Java alleine kann dies nicht garantieren, es ist also eine Spracherweiterung nötig. Ein Deadline-Objekt kann auf eine bestimmte Code-Sequenz angewendet werden und versetzt den ausführenden Thread in den EDF-Modus (Earliest-Deadline-First). Dieser Sequenz ist dann eine bestimmte Zeitspanne zugeordnet, die Zeitspannen können verkettet, verschachtelt und geprüft werden. Dieses System ermöglicht periodische, aperiodische und sporadische Echtzeit-Tasks ohne eine aufgeblähte Programmbibliothek zu verwenden. Die virtuelle Maschine hat z.Zt. ungefähr die Größe von 25KB und verfügt u.a. über Multithreading, Garbage-Collection, Exceptions. Sie wird zusammen mit dem oben aufgezähltem Satz Klassen auf einen Controller gebrannt (Single-Chip-VM). Anwendungen können in einen externen Flash-Speicher geladen werden (Dual-Chip-System). Zur Generierung der Anwendungen ist jeder Java-Compiler geeignet, zum Zusammenpacken und Programmieren dieser Anwendungen existiert ein in Java realisiertes Werkzeug, das dies fast automatisch erledigt. Die virtuelle Maschine ist z.Zt. wegen der maschinennahen Programmierung noch recht starr an ein Zielsystem gebunden. Ein neuer Ansatz soll Java zur Beschreibung von virtuellen Maschinen verwenden. Diese Beschreibung soll zielsystemunabhängig sein, Code-Generatoren bilden erst im letzten Schritt die VM auf eine Architektur ab. Dieses Verfahren abstrahiert die Hardware weiter von der Software-Schicht der virtuellen Maschine und ermöglicht eine stark modularisierte Zusammenstellung spezieller virtueller Maschinen. Der modellbasierte Ansatz soll ferner die Testbarkeit konkreter Implementierungen vereinfachen. |
||||||||||||||||||||||||||||||||||||||||||||||
Lebenslauf |
||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||
Veröffentlichungen |
||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||