Conrad elektor

Praxistipp Elektronik: USB/RS232-Adapter
Präsentiert von ELEKTOR, dem Magazin für Elektronik und Computertechnik
Die schon betagte und vergleichsweise langsame RS232-Schnittstelle muss zunehmend dem USB weichen und wird bei Notebooks und PCs immer öfter ersatzlos gestrichen. Wenn es ohne RS232 nicht geht, beispielweise bei der Mikrocontroller-Programmierung, kann ein käuflicher Adapter die Brücke nach USB schlagen. Doch manchmal gelingt der Brückenschlag nur unvollkommen...

Die serielle Schnittstelle nach RS232-Standard wird so lange unverzichtbar bleiben, wie periphere Geräte mit dieser Schnittstelle in Gebrauch sind. Das haben auch die Adapter-Hersteller erkannt, die für Notebook-, Lap- und Desktop-Computer ohne RS232 diverse Schnittstellen-Wandler von USB nach seriell anbieten. Die Erfahrung mit solchen Adaptern zeigt, dass die Kommunikation zwischen USB und RS232 nicht immer so problemlos verläuft, wie man es sich wünscht.

Installation

Der Adapter hat die Gestalt eines kurzen Kabels (Bild 1), an dem auf einer Seite ein USB-Stecker und auf der anderen Seite eine neunpolige Sub-D-Kupplung montiert sind. Das Gehäuse der Sub-D-Kupplung ist vergossen, hier ist die Adapter-Elektronik untergebracht. Beim ersten Anschließen an den PC-USB-Port erkennt der Geräte-Manager von Windows ein neues USB-Gerät und verlangt nach einem Treiber. Den zugehörigen Treiber findet er auf der zum Produkt mitgelieferten CD, das neue USB-Gerät hat den Namen "Prolific USB-to-Serial Bridge". Die Windows-Warnung, dass der "Windows-Logo-Test" nicht bestanden wurde, kann mit gutem Gewissen ignoriert werden; er bedeutet lediglich, dass die Kompatibilität mit Windows XP von Microsoft nicht überprüft wurde. Die neue virtuelle COM-Schnittstelle wird vom Windows-Geräte-Manager (Bild2) im Verzeichnis der "Anschlüsse" eingetragen, ihr wird eine freie COM-Anschlussnummer zugewiesen.


Bild 2. Die virtuelle COM-Schnittstelle

Falls die zugewiesene COM-Anschlussnummer höher als COM4 ist (z. B. COM6), sollte sie von Hand geändert werden. Das ist deshalb ratsam, weil viele Programme nur mit COM1 bis COM4 arbeiten können. Um die COM-Anschlussnummer zu ändern, klickt man im Geräte-Manager unter "Anschlüsse" auf die neue Schnittstelle, so dass das Fenster "Anschluss-Eigenschaften" erscheint. Über die Anschluss-Eigenschaften gelangt man zu den "Erweiterten Einstellungen" für die neue Schnittstelle (Bild 3). Hier kann dieser Schnittestelle eine andere COM-Anschlussnummer zugewiesen werden, und außerdem sind die Eigenschaften des FIFO-Puffers änderbar. Probleme bei der Kommunikation mit externen Geräten lassen sich manchmal schon dadurch beheben, dass man den FIFO-Puffer deaktiviert.


Bild 3. Umbenennen in COM2

Tempo-Bremse

Der PC oder Laptop wird zwar durch die Installation des USB/RS232-Adapters um eine COM-Schnittstelle erweitert, doch diese virtuelle COM-Schnittstelle kann sich im Betrieb durchaus anders als eine reale RS232-Schnittstelle verhalten. Die Ursache können nicht nur die reduzierten Signalspannungen von +6 V und - 6 V an den RS232-Ausgängen sein, entscheidend ist meistens das unterschiedliche Timing. Hinzu kommt, dass ältere Programme, zum Beispiel aus DOS-Zeiten, natürlich nicht laufen können, wenn sie direkt auf die Register der RS232-Schnittstelle zugreifen. Dagegen kommen alle Windows-Programme, die den indirekten Weg über die Windows-API nehmen, problemlos mit der virtuellen COM-Schnittstelle zurecht. Allerdings kann dabei das Phänomen auftreten, dass die Datenübertragung trotz der wesentlich höheren Geschwindigkeit der USB-Schnittstelle langsamer als gewohnt verläuft. Die oft erheblich niedrigere Übertragungsgeschwindigkeit der virtuellen, über USB nachgebildeten RS232-Schnttstelle im Vergleich zur "echten" RS232-Schnittstelle bedarf natürlich einer Erklärung. Da USB wesentlich schneller als RS232 ist, müsste eine RS232-Schnittstelle mit einer Geschwindigkeit von beispielsweise 115200 bit/s eigentlich problemlos nachzubilden sein. Zum Vergleich: Schon Low-Speed-USB-Geräte wie Tastatur und Maus dürfen zusammen 1,5 Megabit/s übertragen. USB/RS232-Adapter arbeiten auf der USB-Seite im Fullspeed-Modus der USB-Version 1.1, die Übertragungsgeschwindigkeit beträgt hier 12 Megabit/s. Man sollte meinen, dass dies für die Nachbildung der schnellsten RS232-Schnittstelle mehr als ausreicht, doch leider hat die Sache einen Haken. Über USB werden die seriellen Daten als Daten-Pakete übertragen. Die Daten-Pakete folgen aufeinander im Abstand von einer Millisekunde. Der ordnungsgemäße und vollständige Empfang eines Daten-Pakets muss vom Empfänger überprüft und bestätigt werden, der Empfänger schickt dazu auch Daten zurück. Die kürzeste Reaktionszeit bei der Übertragung eines einzelnen Bytes über USB beträgt drei Millisekunden. Sofern die Daten-Pakete genügend lang sind, ist die Übertragungsgeschwindigkeit 115200 bit/s mit der virtuellen RS232-Schnittstelle ohne Zeitverlust realisierbar. Allerdings setzt das voraus, dass größere Daten-Mengen in einem Block übertragen werden, wie es zum Beispiel beim Betrieb eines Druckers oder Modems geschieht.


Bild 4. Das Testprogramm "RS232 Terminal" nach dem Programmstart

Das Testprogramm "RS232 Terminal" steht auf der Elektor-Homepage zum kostenlosen Download bereit. Es zeigt die maximale Übertragungsgeschwindigkeit des angeschlossenen USB/RS232-Adapters an, wenn die Schaltfläche "Text Speed Test" angeklickt wird. Zuvor müssen auf der RS232-Seite die Leitungen TXD und RXD miteinander verbunden werden. Das Programm sendet 60 Textzeichen als einzelne Bytes zum Adapter. Vergleicht man die Geschwindigkeiten von virtuellen und realen RS232-Schnittstellen, so stellt man fest, dass USB/RS232-Adapter bis etwa 9600 bit/s gleiche Geschwindigkeiten garantieren. Eine deutliche Einbuße tritt erst bei höheren Übertragungsgeschwindigkeiten auf.

Noch wesentlich mehr Zeit vergeht, wenn relativ kleine Datenmengen wechselweise in beide Richtungen übertragen werden müssen. Wenn zum Beispiel an ein Mikrocontroller-System mehrere Kommando-Byte gesendet werden müssen und der Controller auf jedes empfangene Byte mit einem Byte antwortet, wirkt sich USB besonders stark als Tempo-Bremse aus. Die Übertragung jedes Byte dauert unabhängig von der Übertragungsrichtung drei Millisekunden. Daraus folgt, dass die effektive Übertragungsgeschwindigkeit nur noch 167 Byte pro Sekunde beträgt.

Das Beispiel zeigt auch, dass die Übertragungsgeschwindigkeit zunimmt, wenn die Daten nicht Byte für Byte, sondern zusammenhängend übertragen werden. Digitalmultimeter mit serieller Schnittstelle erfüllen im Allgemeinen diese Voraussetzung. Um dies zu testen, wurde ein USB/RS232-Adapter mit einem Multimeter von Metex, Modell M-4650CR verbunden. Bei diesem Modell muss im Terminal-Programm die serielle PC-Schnittstelle auf 1200 bit/s und 7 Daten-Bit eingestellt werden. Außerdem muss DTR aktiv sein, damit die Multimeter-Schnittstelle mit Strom versorgt wird. Mit dem Testprogramm wird ein beliebiges Zeichen an das Multimeter gesendet. Die Antwort ist ein aus 14 Zeichen bestehender Textstring, der die aktuelle Multimeter-Anzeige enthält. Die Datenübertragung zum PC verläuft wegen der niedrigen Geschwindigkeit 1200 bit/s auch dann relativ langsam, wenn das Multimeter mit einer realen RS232-Schnittstelle verbunden ist. Durch die Verbindung über den USB/RS232-Adapter wird sie nicht zusätzlich herabgesetzt, in diesem Fall bildet der Adapter eine vollwertige serielle Schnittstelle nach. Bild 5 zeigt die Darstellung der aus dem Multimeter ausgelesenen Daten im Terminal-Programm.


Bild 5. Aus einem Multimeter ausgelesene Daten im "Receive"-Fenster des Testprogramms

Zu ähnlichen Ergebnissen führten Untersuchungen an einem MCS-52-Basic-Mikrocontroller-System. Die serielle Schnittstelle des Controllers wurde auf 9600 bit/s eingestellt. Dann wurde die Geschwindigkeit der Datenübertragung in beiden Richtungen gemessen. Die Messungen wurden an einer realen seriellen Schnittstelle und einer virtuellen, durch einen USB/RS232-Adapter nachgebildeten Schnittstelle durchgeführt. Unterschiede im Übertragungsverhalten konnten nicht festgestellt werden.

Leitungen schalten

Das Steuern der Handshake-Leitungen DTR und RTS sowie das Ein- und Ausschalten des Break-Zustands der TXD-Leitung verläuft über die virtuelle RS232-Schnittstelle generell langsamer als die Übertragung serieller Daten, weil solche Aktionen grundsätzlich drei Millisekunden dauern. Das Gleiche gilt für das Lesen der Signalzustände auf den Leitungen CTS, DSR und so weiter. Mit dem Terminal-Programm kann man sich von dieser Tatsache schnell überzeugen, indem man auf die Schaltfläche "DTR Speed Test" klickt. Das Terminal-Programm schaltet die DTR-Leitung 1000 mal mit der höchsten möglichen Geschwindigkeit ein und aus. Bei diesem Test wurde an einer realen RS232-Schnittstelle und unter Windows XP auf der DTR-Leitung eine Signal-Frequenz von 40 kHz gemessen, die Übertragung der 1000 Impulse war nach 25 Millisekunden beendet. Über die von einem USB/RS232-Adapter nachgebildete Schnittstelle dauerte der gleiche Vorgang 6000 Millisekunden, was einer Signalfrequenz von 167 Hz entspricht.

Der Test zeigte außerdem, dass sich die Windows-Versionen unterschiedlich verhalten. Unter Windows 98 und ME gehen Signal-Zustandswechsel verloren, wenn sie zu schnell aufeinander folgen, bei Windows XP existiert dieses Problem nicht mehr. Hier wird beim Umschalten einer Handshake-Leitung der Programmablauf so lange angehalten, bis die Leitung tatsächlich umgeschaltet ist. In der Software müssen nicht mehr Maßnahmen getroffen werden, die das Verfälschen des DTR-Signals verhindern; das Programm läuft unter Windows XP lediglich langsamer.
Quellenhinweis: Burkhard Kainka, USB/RS232 mit Hindernissen, Elektor 6/2005.
Den vollständigen Artikel können Sie als PDF-Dokument hier herunterladen.
Mehr Informationen auf der Elektor-Website www.elektor.de
Lernen Sie Elektor unverbindlich im Probeabo kennen - 3 Hefte für nur € 12,50
Das bekommen Sie bei Conrad Electonic Beratung 0180/531 21 17 Bestellung 0180/531 21 11
(12 Cent/Min.)

Artikel: USB-MODEM KABEL USB RS232
Bestellnummer: 982417 - U4