Brücken bauen

Der c't-COM-auf-LAN-Adapter verbindet Geräte, die nur eine RS-232-Schnittstelle besitzen, mit dem LAN. So lässt sich zum Beispiel eine Telefonanlage im Keller fernwarten oder ein Modem aus der Ferne nutzen. Die PCs im LAN können sich auch ein so angeschlossenes Gerät teilen. Wer unabhängig vom Betriebssystem bleiben will, nutzt nicht die Systemtreiber, sondern steuert den COM-auf-LAN-Clienten einfach über den eingebauten Webserver.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 13 Min.
Von
  • Benjamin Benz
  • Dipl.-Ing. Thorsten Thiele
Inhaltsverzeichnis

Telefonanlagen, ältere Router und andere Geräte besitzen zur Konfiguration oft nur eine RS-232-Schnittstelle. Stehen diese auch noch an unzugänglicher Stelle, verbringt man unter Umständen die eine oder andere Stunde mit dem Notebook auf den Knien vor einem Schaltschrank. Mit einem Umsetzer von seriell (RS-232) auf Ethernet könnten die Wartungsarbeiten bequem über das LAN vom PC aus erledigt werden - sogar von solchen aus, die gar keine COM-Ports mehr haben. Passende Umsetzer gibt es im industriellen Umfeld schon länger, allerdings zu teilweise stolzen Preisen. Unser Projekt c't-COM-auf-LAN realisiert den Adapter für rund 83 Euro. In einem weiteren Projekt wollen wir das A-Modul dann um ein Mikrocontroller-Modul erweitern, das Mess-, Steuer- und Regelaufgaben übernehmen kann.

Das Kernstück des COM-auf-LAN-Adapters bildet der XPort der Firma Lantronix. In einem Gehäuse, das kaum größer als eine handelsübliche RJ-45-Buchse ist, steckt ein Mikrocontroller mit TCP/IP-Stack, serieller Schnittstelle (3,3-V-Logik) und drei I/O-Pins. Auf der LAN-Seite bezieht er per DHCP eine IP-Adresse. Er besitzt einen integrierten Webserver mit 384 KByte Speicherplatz für HTML-Dokumente und Java-Applets. Diese laufen dann auf jedem beliebigen, Java-tauglichen Browser und können auf die Ressourcen des XPort zugreifen. Hierfür lauscht er für jede seiner Funktionen auf einem eigenen TCP-Port (siehe Tabelle „IP-Ports“), akzeptiert dort aber jeweils nur eine einzelne eingehende Verbindung.

Um den XPort anzusprechen, muss man als erstes seine IP-Adresse festlegen. Dazu stehen mehrere Verfahren zur Auswahl: Der DeviceInstaller von Lantronix (Soft-Link) sucht per UDP-Broadcast (Port 30718) nach XPorts, die per DHCP eine IP-Adresse erhalten haben. Alternativ weist er selbst einem Modul eine IP zu, sofern man dessen MAC-Adresse kennt. Empfängt der XPort während des Bootens nacheinander drei X-Zeichen auf der seriellen Schnittstelle, so bietet er über diese ein Konfigurationsmenü an, in dem sich unter anderem die IP-Adresse einstellen lässt. Wer weder den Deviceinstaller noch die RS-232-Schnittstelle nutzen möchte, kann auch mit:

arp -s 

einen temporären Eintrag im ARP-Cache seines Windows- oder Linux-PC anlegen und erhält dann mit

telnet 9999 

Zugang zur Konfiguration. Neben dem Menüsystem, das man per Telnet (Port 9999) oder über die serielle Schnittstelle erreicht, bieten auch der DeviceInstaller und ein Web-Frontend auf dem XPort Zugriff auf alle wichtigen Einstellungen. Eine detaillierte Erklärung zu den einzelnen Optionen sowie zu den Details der Konfiguration der seriellen Schnittstelle (Baud-Rate, Flusskontrolle) findet sich im XPort User Guide (siehe Soft-Link).

Ohne Änderungen an der Konfiguration reicht der XPort alle Daten, die auf dem TCP-Port 10001 eingehen, direkt an seinen seriellen Port weiter und umgekehrt. Ein einfaches Telnet-Programm reicht deshalb schon aus, um ein angeschlossenes serielles Gerät zu bedienen. Optional fragt der Xport vor dem Durchleiten der Daten einmal nach einem Passwort. Mehr Komfort bietet unter Windows ein Treiber (COM Port Redirector), der einen virtuellen COM-Port einrichtet. Dieser ist völlig transparent. So bekommt zum Beispiel die Software zur Konfiguration einer Telefonanlage überhaupt nichts von der Netzwerkverbindung zwischen PC und Anlage mit, sofern sie mit einer COM-Port-Nummer oberhalb von zwei umgehen kann.

Der Redirector (siehe Soft-Link) kann pro COM-Port bis zu vier XPorts verwalten. Er probiert, sobald ein Programm auf die virtuelle Schnittstelle zugreift, alle Kandidaten durch, bis er einen freien gefunden hat. Das dort angeschlossene Gerät erscheint dann am jeweils gewählten COM-Port. Sobald die Applikation den Port wieder freigibt, baut der Treiber auch die TCP-Verbindung ab. Nützlich ist dies beispielsweise für einen Modem-Pool, bei dem es keine Rolle spielt, welches Gerät man zugewiesen bekommt, Hauptsache kein anderer Nutzer belegt es.

Für Linux übernimmt das Programm socat (siehe Soft-Link) die Emulation einer seriellen Schnittstelle. Der Befehl

socat PTY,link=/dev/XPort TCP::10001 

legt zum Beispiel ein neues Pseudo-Terminal als /dev/XPort an. Dieses kann dann ein Terminalprogramm wie Minicom öffnen und sieht nur das an den XPort angeschlossene serielle Gerät. Leider wartet socat nicht, bis das Pseudo-Terminal benutzt wird, sondern stellt sofort eine Verbindung her und blockiert somit den XPort.

Ein Xport kann nicht nur auf eingehende Verbindungen warten, sondern sie auch selbst aufbauen. So bilden zwei über ein TCP/IP-Netz verbundene COM-auf-LAN-Adapter eine volltransparente Brücke für eine RS-232-Datenverbindung. Empfängt einer der XPORTs ein Zeichen auf seiner seriellen Schnittstelle, baut er über das Netzwerk einen Tunnel zu seinem Partner auf, ohne dass die beiden seriellen Geräte etwas davon mitbekommen. Ein solcher Tunnel verbindet serielle Geräte sogar über das Internet und überbrückt dabei für RS-232-Kabel unerreichbare Distanzen.

Der XPort kann aber nicht nur als reine Datenbrücke zwischen Ethernet und seriellen Schnittstellen (3,3-V-Logik, mit Pegelwandler RS-232) arbeiten, sondern verfügt auch über einen integrierten Webserver. Seine 384 KByte Speicherplatz dürfen beliebige Dateien füllen, solange jede einzelne nicht größer als 64 KByte ist. Der findige Programmierer kann über Java-Applets, die er auf dem Webserver installiert, das serielle Gerät und die I/O-Ports bedienen. Zum Upload der Dateien auf den Server dient das TFTP-Protokoll, für das sowohl die meisten Linux- als auch Windows-Versionen schon Software mitbringen (siehe Soft-Link).

Im Kasten ist zur Demonstration ein Applet mit Terminal-Programm und Zugriff auf die universellen Ein-/Ausgabe-Pins (GP-I/O) beschrieben. Für Diskussionen über eigene Experimente und den Austausch von Quellcode haben wir zusätzlich ein Leserforum [1] zu diesem Artikel eingerichtet.

Die Rechenleistung für den Webserver und den Umsetzer stellt eine 16-Bit-80186er-CPU mit 48 MHz zur Verfügung. Sie besitzt 256 KByte SRAM und 512 KByte Flash und läuft mit einer proprietären Software von Lantronix.

Die seriellen Leitungen des XPorts sind über Jumper mit dem ST232-Pegel-wandler verbunden. Hier kann man statt dessen auch ein Erweiterungsmodul einschleifen, um Daten vom XPort oder einem seriellen Gerät zu empfangen.

Der XPort ist in zwei Versionen erhältlich: Die XE-Version unterstützt nur unverschlüsselte Verbindungen, die SE-Variante kann die Nutzdaten auch mit SSL schützen.

Auf der Platine des A-Moduls befinden sich nur wenige Bauteile: Zwei Spannungswandler erzeugen aus einer Eingangsspannung von 6,5 bis 9 Volt (DC) stabilisierte Gleichspannungen von 5 Volt und 3,3 Volt. Ein Pegelwandler (ST232) vermittelt zusammen mit ein paar Z-Dioden und Längswiderständen zwischen den 3,3-Volt-Logik-Pegeln des XPort und den ±12 Volt der RS-232-Schnittstelle. Und zu guter Letzt geben fünf LEDs, die ein 74LV14-Chip treibt, über den Zustand der Daten- und GP-I/O-Leitungen Auskunft. Als Stromquelle dient ein einfaches Steckernetzteil, das 200 mA liefern kann.

Für eigene Erweiterungen stehen auf zwei Stiftleisten (P5 und P6) alle wichtigen Signale und Stromversorgungsleitungen zur Verfügung. Solange kein Erweiterungsmodul angeschlossen ist, müssen auf der P5-Leiste vier Jumper gesteckt sein, um die Datenleitungen des XPorts mit dem Pegelwandler zu verbinden. Wer auf die RTS- und CTS-Signale der RS-232-Schnittstelle verzichten kann, muss nur die beiden Jumper für Tx und Rx stecken (Pin 4, 5 und 6, 7, siehe auch Tabelle).

Viele serielle Geräte und auch PCs mit älteren Windows-Versionen erwarten einen aktiven Pegel auf den Leitungen DCD und DSR. Durch Stecken der Jumper P3 und P4 wird das vom seriellen Gerät ausgegebene Aktiv-Signal der Leitung DTR auf DCD und DSR zurückgeführt. Im Regelfall sollten diese Brücken also gesteckt sein.

Die gesamte Schaltung kommt ohne SMD-Bauteile aus und sollte deshalb mit ruhiger Hand und einem feinen Lötkolben problemlos aufzubauen sein. Dabei empfiehlt es sich, zuerst die Spannungswandler einzulöten (P1, D1, C1 bis C3, C9, IC5, IC3) und mit einem Multimeter zu prüfen. Dazu misst man die Spannung zwischen Pin 1 und 2 sowie 2 und 3 der Stiftleiste P5. Liegen dort 5 Volt und 3,3 Volt an, so funktioniert die Stromversorgung und man kann nach dem Abschalten der Versorgungsspannung gefahrlos mit der Bestückung der restlichen kleinen Bauteile fortfahren. Zuletzt kommen die platzfressenden ICs und der XPort. Die unbestückte Platine bietet eMedia für 6 Euro an, einen Bauteilsatz vertreibt SEGOR-electronics in Berlin [2] zu einem Preis von 77 Euro.

Das hier vorgestellte Selbstbauprojekt bietet eine gute Grundlage für eigene Mess- und Steuerschaltungen, die über Ethernet kommunizieren sollen und keine allzu hohen Geschwindigkeitsansprüche (max. 115 200 Baud an der RS-232-Schnittstelle) haben. Die sonst üblichen Schwierigkeiten mit dem HF-Design der LAN-Schnittstelle und der Softwareaufwand für einen eigenen IP-Stack und Webserver entfallen völlig. Auf den beiden Stiftleisten stehen alle wichtigen Signale zur Verfügung, die eigene Schaltungen benötigen könnten.

Im zweiten Teil des Projektes stellen wir dann das B-Modul vor, das über einen frei programmierbaren Mikrocontroller mit vielfältiger Peripherie verfügt. Aber auch das A-Modul bietet noch weitere Möglichkeiten, zum Beispiel die Benachrichtigung per E-Mail, sobald einer von drei Triggern ausgelöst wird oder die Abfrage von Statusinformationen per SNMP. (bbe)

[1] Leserforum zum Projekt

[2] SEGOR-electronics

www.ct.de/0413200


Das Beispiel-Applet von c't soll als Entwicklungsgrundlage den Zugriff auf die wichtigsten Funktionen des A-Moduls vom c't-COM-auf-LAN-Adapter demonstrieren: die Ethernet-RS-232-Brücke und die I/O-Pins. Eine Terminal-Emulation zeigt, wie sich angeschlossene Geräte in einem Webbrowser steuern lassen. So kann man zum Beispiel eine Telefonanlage oder einen Switch, die über ein integriertes Menüsystem verfügen, konfigurieren.

Ob die drei konfigurierbaren Pins die Flusskontrolle der seriellen Schnittstelle (CTS, DCD, RTS/DTR) übernehmen oder ob sie als I/O-Ports zur Verfügung stehen, muss außerhalb des Applets eingestellt werden - zum Beispiel mit dem „Device Installer“ von Lantronix.

Ihre Funktion als Ein- oder Ausgang schaltet das Applet je nach Bedarf selbst um, liest die aktuellen Werte der Eingänge aus und schaltet die LEDs an den Ausgängen.

Das Applet besteht aus drei Java-Klassen: TcpIpControl, IOControl und GUI. TcpIpControl stellt Routinen für das Senden und Empfangen von Daten zum XPort zur Verfügung. IOControl bietet Hilfsroutinen zum Steuern der I/O-Pins und der LEDs an, während GUI die Benutzereingaben entgegennimmt und die Antworten des XPort darstellt.

Aus Sicherheitsgründen darf ein Applet, wenn es in einem Webbrowser läuft, nur TCP-Verbindungen zu dem Server aufbauen, von dem es heruntergeladen wurde. Wenn also ein auf dem PC gespeichertes Applet versucht, eine Verbindung zum XPort aufzubauen, verweigert die Java Virtual Machine den Netzwerkzugriff. Innerhalb eines Browsers lassen sich Applets nur schwer debuggen. Deshalb bietet es sich an, eigene Programme zunächst als Java-Applikation zu entwickeln oder sie als Applet direkt in der Java-Laufzeitumgebung auszuführen - beispielsweise mit dem AppletViewer von Sun. Dann funktionieren auch alle üblichen De-bug-Funktionen einer Entwicklungsumgebung wie Eclipse.

Der Device Installer bietet eine einfache Möglichkeit, HTML-Seiten und Applets auf den XPort zu überspielen. Allerdings kennt er keinen Batch-Betrieb, sodass jedes Mal der grafische Assistent herhalten muss - bei mehreren Dateien wünscht man sich daher einen effektiveren Weg wie zum Beispiel web2cob (siehe Soft-Link). Ein Aufruf von

web2cob /o /d 

packt den ganzen Inhalt des angegebenen Verzeichnisses in ein einzelnes .cob-Archiv und lässt sich als externes Tool in viele Entwicklungsumgebungen integrieren. So steht nach jedem Build eine aktuelle Version des Programms als .cob-Datei zum Flashen bereit.

Diese darf maximal 64 KByte groß sein und entspricht einem der sechs Speicherbereiche des Webserver-Flashs (insgesamt also 384 KByte). Diese Speicherbereiche tragen die Namen WEB1 bis WEB6. Einzelne Dateien, die größer als 64 KByte sind, lassen sich gar nicht auf den XPort übertragen und mehrere Dateien mit einer Gesamtgröße von mehr als 64 KByte nur mit dem Device Installer.

TFTP, eine abgespeckte FTP-Version auf UDP-Basis, überträgt dann die COB-Datei auf den XPort:

tftp -i put <.cob-Archiv> 

(Oliver Zechiel)

Pinbelegung A-Modul
Pin Belegung
P1
1 Power In (6 bis 12V)
2 GND
P2 RS-232
P3
1,2 RS-232 DCD
P4
1 RS-232 DSR
2 RS-232 DTR
P5
1 VCC (5V)
2 GND
3 V33 (3,3V)
4 RS-232 Tx
5 XPort Dout
6 RS-232 Rx
7 XPort Din
8 RS-232 CTS
9 XPort CP1
10 XPort CP2
11 RS-232 RTS
12 XPort CP3
13, 14 NC
P6
1 XPort Dout
2 XPort Din
3 XPort CP1
4 XPort CP2
5 XPort CP3
6 GND
Jumper A-Modul
Jumper Bedeutung RS-232 GP-I/O
P5.4-P5.5 TX + +
P5.6-P5.7 RX + +
P5.8-P5.9 CTS + -
P5.11-P5.12 RTS + -
P3.1-P4.1 DSR-DCD + +
P3.2-P4.2 DTR-DCD + +
IP-Ports des XPORT
Port Protokoll Bedeutung
tcp/80 http integrierter Webserver
tcp/9999 telnet Konfigurationsmenü
tcp/10001 raw Datentunnel für serielleDaten
tcp/30704 binary Zugriff GP-I/O-Pins
tcp/30718 binary Setup-XPort
udp/68 dhcp DHCP-Client
udp/69 tftp Firmware Update
udp/161 snmp SNMP-Management
udp/30704 binary Zugriff GP-I/O-Pins
udp/30718 binary Netzwerk-Einstellungen
Bezugsquelle
Quelle Bauteil
www.emedia.de Platine
www.segor.de Platine, Bauteilsatz, XPort XE einzeln

(bbe)