Serielle Geräte ins Web bringen

Einfach möglich
Kommentare

Ob nun der örtliche Tourismus-Verband die aktuellen Wetterdaten weltweit präsentieren oder das Fertigungsunternehmen den Status einer Anlage per Web-Based Management überwachen will: Manchmal müssen vorhandene Geräte, die von Haus aus nicht einmal einen Netzwerkanschluss haben, mit einer Weboberfläche ausgestattet und im Internet/Intranet verfügbar gemacht werden. Das scheint auf den ersten Blick schwieriger, als es ist: Eine kostengünstige kleine Box, ein PHP-Skript und der Zugang zu einem PHP-fähigen Webserver genügen, wie hier am Beispiel einer Wetterstation gezeigt wird.

Für den Webentwickler tun sich ganz neue Möglichkeiten durch das Vordringen des Web-Based Management in allen Bereichen der Technik auf, aber auch mit der Anbindung externer Geräte etwa zu Werbezwecken, die über die klassische Homepage-Erstellung und die datenbankorientierte Webentwicklung hinausgehen. Listing 1

<img src="http://cdn.sandsmedia.com/ps/onlineartikel/pspic/picture_file//47/import3fcc9c884bb81.jpeg<
Abb. 2: Wetterstation physikalisch

Nicht zuletzt bei der Automatisierung in der Industrie wächst der Wunsch nach Weboberflächen, denn die Vorteile des Web-Based Management werden hier zunehmend erkannt: So kann etwa während der Nachtschicht ein Service-Techniker von irgendwo in der Welt mit dem Browser, ohne spezielle Software auf seinem PC, den Zustand einer Anlage diagnostizieren – eine Einwahlmöglichkeit in das firmeneigene Intranet vorausgesetzt. Durch übersichtliche, grafisch aufbereitete Seiten kann er im Notfall schnell die Situation erfassen und die richtigen Maßnahmen treffen. Oft werden mit solchen web-basierenden Lösungen alte proprietäre Programme abgelöst, die direkt über eine lokale serielle Schnittstelle mit dem Gerät oder der Maschine kommunizierten. Außerhalb der schnelllebigen Web- und IT-Welt trifft man dabei jedoch oft auf Geräte, die durch ihre hohen Anschaffungskosten noch eine Lebens- und Abschreibungsdauer von vielen Jahren, manchmal Jahrzehnten vor sich haben. Solche Geräte kennen häufig noch keinen Ethernet-Anschluss, sondern nur serielle Schnittstellen wie RS-232, RS-422, RS-485 oder 20mA. Der Anschluss eines solchen seriellen Gerätes an das Ethernet ist mit einem speziellen Interface möglich, etwa dem Com-Server von Wiesemann & Theis (W & T) für weniger als 300 Euro. Dieser ist kaum größer als eine Zigarettenschachtel und besitzt nach außen je einen Anschluss für Ethernet (RJ45) und RS-232 (9-polig, umschaltbar auch für RS-422 und RS-485). Schon nach Eingabe der seriellen Übertragungsparameter wie Baud-Rate usw. sowie der IP-Adresse, Subnet Mask etc. und dem Stecken der Verbindungskabel ist eine transparente Netzverbindung zwischen Webserver und seriellem Gerät möglich. Um das Prinzip möglichst verständlich darzustellen, wurde als Beispiel eine Wetterstation mit serieller Schnittstelle gewählt. Da in der Webseite dynamische Inhalte dargestellt werden, die nur auf der Serverseite und nicht auf der Clientseite verfügbar sind, liegt ein typischer Anwendungsfall für eine serverseitige Skriptsprache wie PHP vor. Nur wird hier nicht (wie wohl sonst in den meisten Fällen) eine Datenbankanfrage gestartet, sondern ein externes Gerät angesprochen. Prinzipiell wäre das gleiche auch mit anderen Skriptsprachen und -umgebungen möglich (ASP, JSP, ColdFusion oder CGI/PERL). Das PHP-Skript, das hier als Beispiel dient und zum Download zur Verfügung steht (www.wut.de/ unter ComServer Applikationen), ist sehr umfangreich kommentiert, sodass sich an dieser Stelle eine Erläuterung des Sourcecodes im Einzelnen erübrigt. Der grundsätzliche Ablauf ist in Abb. 2 dargestellt: Der Anwender ruft mit dem Browser eine bestimmte, auf dem Server abgelegte Seite (hier: wetter.php/) auf (1), die ihm die aktuellen Wetterdaten in einer vom Webentwickler vorbereiteten Form darstellen soll. Da es sich bei der Webseite um eine PHP-Datei handelt, übergibt der Webserver diese an den PHP-Interpreter (2), der die PHP-Anteile abarbeitet. Mit den im Sprachumfang von PHP enthaltenen Funktionen zur Socket-Behandlung baut der PHP-Interpreter nun eine Verbindung zum Com-Server (3) auf und fragt darüber die aktuellen Wetterdaten ab. Die Kommunikation zwischen Com-Server und Wetterstation über die serielle Schnittstelle (4 und 5) ist für das PHP-Skript nicht sichtbar. Sie wird vom Com-Server völlig autark behandelt. Das PHP-Skript sieht nur die IP-Adresse des Com-Servers, dessen Antwort (6) nun über die Socket-Verbindung eingelesen wird. Im PHP-Skript wird nun die notwendige Fehlerbehandlung durchgeführt. Bei erfolgreicher Verbindung wird der ankommende Byte-Strom in einem String abgelegt. In unserem Beispiel werden die einzelnen ASCII-Zeichen des Strings nacheinander als 8-Bit-Binärwerte ausgelesen, interpretiert und umgerechnet. In einigen Fällen werden aus je zwei Byte ein 16-Bit-Integer-Wert generiert. Außerdem sind hier angelsächsische Maßeinheiten wie Meilen pro Stunde in metrische Maßeinheiten umzurechnen. Dieser Teil ist natürlich völlig spezifisch für das jeweilige Gerät und muss an die eigenen Anforderungen angepasst werden. Mit dem Beispielskript dürfte jedoch das Prinzip so weit deutlich werden, dass die Anpassung an andere Geräte kein Problem darstellen sollte. Vorausgesetzt sind natürlich PHP-Grundkenntnisse, ein Handbuch des seriellen Gerätes und die Möglichkeit, die Kommunikation mit dem Gerät zu testen. Der PHP-Interpreter generiert nun (7) aus den statischen HTML-Anteilen, die die PHP-Seite bereits enthält, und den dynamisch ermittelten Werten eine vollständige HTML-Seite, die (8) der Webserver an den Browser zurückliefert. Selbstverständlich kann zusätzlich der PHP-Interpreter die Wetterdaten z.B. in eine Datenbank auf dem Server schreiben. Das einfache Beispiel der Umrechnung von Maßeinheiten macht die Vorteile deutlich, wenn man alle intelligenten Aufgaben auf dem Server ausführen lässt. Ein Webserver dürfte selbst bei sehr viel komplexeren Berechnungen oder aufwändigen grafischen Darstellungen mit seinen Ressourcen nicht so schnell an Grenzen stoßen. Der Hersteller des Com-Servers hat auch deshalb bewusst darauf verzichtet, eine entsprechende Programmiermöglichkeit innerhalb der Box vorzusehen. Innerhalb der Box bestünde nämlich nicht nur das Problem begrenzter Ressourcen, sondern es müsste dem Anwender eine eigene Entwicklungsumgebung zur Verfügung gestellt werden. Bei der hier skizzierten Lösung kann dagegen der Anwender in seiner gewohnten Entwicklungsumgebung arbeiten und muss sich bei seiner Programmierung nicht mit den Eigenschaften der Box auseinander setzen. Ein Webserver bzw. ein PHP-Skript kann außerdem gleich mehrere Com-Server ansteuern und deren Daten bündeln und gemeinsam verarbeiten. Dies hat auch Sicherheitsvorteile: Nur der ohnehin erreichbare Webserver muss von außen aus dem Internet erreicht werden können. Es sind also keine zusätzlichen Freischaltungen in der äußeren Firewall notwendig. Da die Socket-Verbindungen auch über WAN-Strecken, etwa innerhalb eines Unternehmensnetzwerkes, funktionieren, könnten mit der hier beschriebenen Methode sogar weltweit verteilte, serielle Wetterstationen über ein einziges PHP-Skript auf einem Webserver abgefragt und ihre Messwerte visualisiert werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -