Forum: Mikrocontroller und Digitale Elektronik RS232 Switch


von B. S. (bestucki)


Lesenswert?

Hallo zusammen, ich hoffe, ich hab das richtige Forum erwischt.

Da ich mehrere Geräte habe, die ich gleichzeitig via RS232 bedienen 
will, bin ich auf die Idee gewommen eine Art RS232 Switch zu bauen. Hier 
mal meine Idee:

Der Switch wird via USB mit dem PC verbunden. Auf dem PC werden mehrere 
virtuelle COM Ports erstellt, die dann von den entsprechenden Programmen 
genutzt werden können. Der Switch entscheidet dann anhand des (noch zu 
definierenden) Protokolls, an welches Gerät er nun was senden muss.

Ich weiss, USB ist eigentlich nicht für solche Dinge geeignet, aber wenn 
ich im PC, sowie im Switch genug Daten puffern kann, sollte dies 
hoffentlich keine Probleme geben. Auch könnte ich den Vorteil nutzen, 
dass USB schneller als RS232 ist und ich somit mehrere Geräte 
"gleichzeitig" bedienen könnte. Ich tendiere gegen bis zu zehn RS232 
Schlittstellen mit einem Switch.


Nun meine Fragen:

1. Ist das ganze Vorhaben überhaupt realisierbar und sinnvoll? Oder ist 
es besser, für jedes Gerät gleich einen USB zu RS232 Konverter zu kaufen 
und diese an einem USB Hub zu betreiben? (Das wäre sicher die schnellste 
und einfachste Lösung, aber ein bisschen basteln macht doch auch Spass)

2. Wie verwalte ich mit einem Programm/Treiber mehrere virtuelle COM 
Ports? Hat da jemand Links dazu (bin in Windows Programmierung nicht so 
fit).

3. Um zehn RS232 Schnittstellen bedienen zu können, benötige ich 
hardwareseitig schon mächtig Dampf, wenn alle Schnittstellen voll 
ausgelastet sind. Was wäre da am besten geeignet? Schneller 
Mikrocontroller oder gleich Richtung FPGA?


Vielen Dank für eure Antworten!

von Peter II (Gast)


Lesenswert?

be stucki schrieb:
> 1. Ist das ganze Vorhaben überhaupt realisierbar und sinnvoll? Oder ist
> es besser, für jedes Gerät gleich einen USB zu RS232 Konverter zu kaufen
> und diese an einem USB Hub zu betreiben? (Das wäre sicher die schnellste
> und einfachste Lösung, aber ein bisschen basteln macht doch auch Spass)

von FTTI gibt es doch welche mit mehr als 1 RS232


> 2. Wie verwalte ich mit einem Programm/Treiber mehrere virtuelle COM
> Ports? Hat da jemand Links dazu (bin in Windows Programmierung nicht so
> fit).

genausso wie du es mit einer faschst. Einfach eine neues Handle anlegen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

be stucki schrieb:
> Oder ist es besser, für jedes Gerät gleich einen USB zu RS232 Konverter
> zu kaufen und diese an einem USB Hub zu betreiben?
> (Das wäre sicher die schnellste und einfachste Lösung,
Noch wichtiger: es ist die sinnvollste Lösung.

> aber ein bisschen basteln macht doch auch Spass)
Schnitz ein hübsches Gehäuse drumdrum...

> Um zehn RS232 Schnittstellen bedienen zu können, benötige ich
> hardwareseitig schon mächtig Dampf, wenn alle Schnittstellen voll
> ausgelastet sind. Was wäre da am besten geeignet? Schneller
> Mikrocontroller oder gleich Richtung FPGA?
Was willst du machen?
1x PC  ->  1x USB  ->  10x RS232  ->  1x uC?
Definiere "voll ausgelastet".

von Joerg F. (felge1966)


Lesenswert?

Die Multiplexerei hatte ELV mal als Bausatz vermarktet.

http://www.elv.de/controller.aspx?cid=683&detail=10&detail2=167328

http://www.elv-downloads.de/service/manuals/MUX232/MUX232_KM_G_000531.pdf

Eventuell kannst du ja so was nachnutzen, wobei das Besorgen des 
Prozessors da schon das Problem sein könnte. Die USB Seite kannst du ja 
dann mit einem USB-COM Adapter machen.

von Paul H. (powl)


Lesenswert?

Da ein USB-RS232-TTL Konverter nur 2-3€ beim Chinesen kostet würde ich 
sagen.. das lohnt nicht.

von B. S. (bestucki)


Lesenswert?

Lothar Miller schrieb:
> Was willst du machen?
> 1x PC  ->  1x USB  ->  10x RS232  ->  1x uC?
1x PC -> 1x USB -> 1x uC/FPGA -> 10x RS232 -> 10x Gerät

Lothar Miller schrieb:
> Definiere "voll ausgelastet".
Jedes Gerät sendet und empfängt kontinuierlich Daten mit 115.2kbit/s.

Paul Hamacher schrieb:
> Da ein USB-RS232-TTL Konverter nur 2-3€ beim Chinesen kostet würde ich
> sagen.. das lohnt nicht.
Taugen die was? Hatte schon mit einigen Konvertern Probleme, weil sie zu 
wenig Daten puffern konnten. Hatte mal einen guten von Moxa, kann ihn 
aber nicht mehr finden. Kostete aber auch ein bisschen mehr.

von Christian B. (casandro)


Lesenswert?

Besonders wenn das ganze noch unter Windows laufen soll sind selbst die 
USB-Seriell Wandler riskant. Treiberentwicklung unter Windows ist 
absolut nicht trivial. Wenn möglich steck eine PCI-Karte mit vielen 
RS-232 Ports in den Rechner. Die gibts mit bis zu 32 Ports.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich mach's mir mal einfach:

http://www.delock.de/produkte/G_61860/merkmale.html

http://www.logilink.eu/showproduct/AU0033.htm


... um nur die einfachen und günstigen Verdächtigen zu nennen.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

dein Konzept hat einen Haken: gleichzeitiger Emfang ist nicht möglich. 
Du hast ja in Wirklichkeit nur eine Schnittstelle die du umschaltest. 
Sowas geht unter bestimmten Bedingungen, z.B. habe ich das mit einem 
Protokoll geregelt:

1. Gesendet wird an alle parallel
2. Es antwortet nur das mit einer Adresse angesprochene Gerät

Für so ein Protokoll kann man das schon rein in Hardware lösen, da man 
die Empfangsdaten verodern kann, aber dazu muss eben der Punkt 2 streng 
eingehalten werden. Kannst du das nicht garantieren, musst du bei deiner 
USB-FTDI-Lösung alle Empfänger (und ev. auch Sender) bis auf einen 
hardwaremässig blockieren, aber dann gehen auf den anderen Leitungen 
eingehende Daten natürlich verloren.

Gruss Reinhard

von Jim M. (turboj)


Lesenswert?

Reinhard Kern schrieb:
> dein Konzept hat einen Haken: gleichzeitiger Emfang ist nicht möglich.

LOL, und wie meinst Du funktionieren dann die FT2232H (2* UART) und 
FT4232H (4*UART)?

Natürlich kann man gleichzeitig empfangen (und auch senden), solange die 
Datenmenge insgesamt kleiner als die USB Schnitstellengeschwindigkeit 
bleibt. Die o.g. Chips arbeiten mit USB 2.0 High-Speed, also 480 MBit 
brutto. Natürlich haben die Schnittstellen FIFOs, aber bei 115200 Baud 
kann man IMO die Bytes auch einzeln in USB Pakete packen.

von B. S. (bestucki)


Lesenswert?

Reinhard Kern schrieb:
> dein Konzept hat einen Haken: gleichzeitiger Emfang ist nicht möglich.

Danke für deine Zweifel, ich versuche es deutlicher zu erklären:
Mein Switch hat z.B. 10 RS232 Schnittstellen. Dann werden auf dem PC 10 
virtuelle COM Ports erstellt, die andere Programme regulär nutzen 
können. Mein Treiber wurstelt die Daten in ein Protokoll und sendet 
dieses an meinen Switch. Der Switch weiss nun anhand des Protokolls, auf 
welcher RS232 Schnittstelle er die Daten an das Endgerät senden muss. 
Diese 10 RS232 Schnittstellen sind nicht physikalisch miteinander 
verbunden, sondern werden alle von meinem uC/FPGA bedient. Da USB 
schneller als RS232 ist, kann ich somit "gleichzeitig" an mehrere 
Endgeräte senden. Klar, es ist nicht gleichzeitig, doch das Endgerät 
bemerkt dies nicht.


Rufus Τ. Firefly schrieb:
> Ich mach's mir mal einfach:
> http://www.delock.de/produkte/G_61860/merkmale.html

Vielen Dank! Delock kannte ich noch gar nicht. Diese scheinen einige 
interessante Produkte zu haben. Wahrscheinlich wird es auf deinen 
Vorschlag hinauslaufen, eine Eigenentwicklung ist auf alle Fälle nicht 
günstiger.


Christian Berger schrieb:
> Wenn möglich steck eine PCI-Karte mit vielen
> RS-232 Ports in den Rechner. Die gibts mit bis zu 32 Ports.

Das ist sicher die zuverlässigste Möglichkeit, einen Steckplatz habe ich 
gerade noch frei. Allerdings schreckt mich das benötigte Adapterkabel 
ein bisschen ab. Hab jetzt schon einen armdicken Kabelbaum hinter dem 
PC...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

be stucki schrieb:
> ich versuche es deutlicher zu erklären:
> Mein Switch hat z.B. 10 RS232 Schnittstellen.

Der Begriff "Switch" ist hier unpassend gewählt. Das ist kein "Switch", 
denn es ist auch kein Umschalter, sondern es ist einfach nur eine 
USB-Seriell-Bridge mit mehreren simultan nutzbaren seriellen Ports.

So etwas gibt es --wie ich bereits zeigte-- als fertiges Gerät von 
diversen Herstellern, so etwas gibt es aber auch als Baustein von FTDI, 
in diesem Fall mit vier simultan nutzbaren Schnittstellen:

http://www.ftdichip.com/Products/ICs/FT4232H.htm

So etwas entwickelt man nicht selbst, weil der Aufwand der 
Treiberentwicklung in überhaupt keinem Verhältnis zum erzielbaren Nutzen 
steht. Für die oben genannten Fertiggeräte oder auch diesen Baustein von 
FTDI gibt es fertige, millionenfach erfolgreich eingesetzte und 
getestete Devicetreiber.

Und auch wenn die vier Ports des FT4323H nicht ausreichen, dann nimmt 
man halt mehrere davon und ein USB-Hub-IC. Auch diese Kombination ist 
ganz erheblich einfacher zu handhaben als die Treiberselbstentwicklung, 
und immer noch deutlich leistungsfähiger und flexibler als es eine 
CDC-Lösung wäre (die auf mit üblichen Betriebssystemen standardmäßig 
ausgelieferte Treiber zurückgreifen könnte).

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

Fertige Lösungen gibts auch von 
http://eng.sysbas.com/e-Products/default3.asp?sNum=69

Christian_RX7

von B. S. (bestucki)


Lesenswert?

So, ich habe mich für folgendes Produkt entschieden:
http://www.delock.de/produkte/G_61860/merkmale.html

Werde es in den nächsten Tagen bestellen, eine Weile lang testen und 
dann hier berichten ob das Ding was taugt. Oder hat das schon jemand 
erfolgreich im Einsatz?

Vielen Dank für eure Hilfe, hat mir sehr weitergeholfen!

von Peter II (Gast)


Lesenswert?

be stucki schrieb:
> So, ich habe mich für folgendes Produkt entschieden:
> http://www.delock.de/produkte/G_61860/merkmale.html

die Beschreibung klingt aber irgendwie merkwürdig:

> • Automatische Selektion der IRQ und I/O Adressen

wie kann ein USB gerät IO oder IRQ vewenden?

von B. S. (bestucki)


Lesenswert?

Peter II schrieb:
> wie kann ein USB gerät IO oder IRQ vewenden?

Mit IO sind wohl die COM Ports gemeint. Warum sollte der Treiber des 
Konverters kein IRQ auslösen können? Mein bisheriger 1 Fach Konverter 
kann das auch.

von Peter II (Gast)


Lesenswert?

be stucki schrieb:
> Warum sollte der Treiber des
> Konverters kein IRQ auslösen können?

wenn überhaupt dann Events. IRQ werden dafür nicht verwendet.

von Frank (Gast)


Lesenswert?

Wozu tut man sich eigentlich immer wieder dieses USB-Treiber-Gefruzzel 
an? Wäre nicht eine Etehrnet-basierte IP-zu-multi-RS232-Bridge viel 
simpler zu nutzen?

- kein Treiber auf der PC seite erforderlich
- bei Bedarf beliebige Entfernung überbrückbar
- plattformunabhängig vom Smartfon bis zum Mainframe

Reicht das nicht an Vorteilen?

von Peter II (Gast)


Lesenswert?

Frank schrieb:
> Wozu tut man sich eigentlich immer wieder dieses USB-Treiber-Gefruzzel
> an? Wäre nicht eine Etehrnet-basierte IP-zu-multi-RS232-Bridge viel
> simpler zu nutzen?
> - kein Treiber auf der PC seite erforderlich
> - bei Bedarf beliebige Entfernung überbrückbar
> - plattformunabhängig vom Smartfon bis zum Mainframe
>
> Reicht das nicht an Vorteilen?

nein, den größten Nachteil hast du vergessen.

Es funktioniert nicht mit anwendungen, die einen Com-Port brauchen.

von B. S. (bestucki)


Lesenswert?

Peter II schrieb:
> wenn überhaupt dann Events. IRQ werden dafür nicht verwendet.

Hmm, sobald via Konverter kontinuierlich Daten an den PC sende, habe ich 
laut Process Explorer jede Menge Interrupts, die ich sonst nicht habe. 
Das muss doch fast der Konverter oder dessen Treiber sein. Oder Process 
Exlorer zeigt Mist an.

von Peter II (Gast)


Lesenswert?

be stucki schrieb:
> Hmm, sobald via Konverter kontinuierlich Daten an den PC sende, habe ich
> laut Process Explorer jede Menge Interrupts, die ich sonst nicht habe.
> Das muss doch fast der Konverter oder dessen Treiber sein. Oder Process
> Exlorer zeigt Mist an.

das ist aber die USB Interrupts. Das hat nichts mit dem Treiber oder dem 
Gerät zu tun. Sie würde auch kommen, wenn du eine Festplatte an den USB 
anschluss anschließt.

von B. S. (bestucki)


Lesenswert?

Peter II schrieb:
> das ist aber die USB Interrupts.

Ob es ein USB Interrupt oder ein echtes RS232 Interupt ist, ist 
eingentlich egal. Hauptsache die Daten werden schnell verarbeitet :)

von Georg G. (df2au)


Lesenswert?

Peter II schrieb:
> Es funktioniert nicht mit anwendungen, die einen Com-Port brauchen.

Guckle nach tcp2com, ist ein Remapper, funktioniert.

von Peter II (Gast)


Lesenswert?

Georg G. schrieb:
> Guckle nach tcp2com, ist ein Remapper, funktioniert.

was auch wieder ein Treiber ist, das problem wollst er ja umgehen.

von Georg G. (df2au)


Lesenswert?

Peter II schrieb:
> was auch wieder ein Treiber ist, das problem wollst er ja umgehen.

Unter Windumm oder Tunix ist es ein (virtueller) COM-Port, von einem 
"echten" nicht zu unterscheiden. Um das bis auf die Register Ebene zu 
simulieren, muss man schon etwas mehr Aufwand treiben.

von Peter II (Gast)


Lesenswert?

Georg G. schrieb:
> Unter Windumm oder Tunix ist es ein (virtueller) COM-Port, von einem
> "echten" nicht zu unterscheiden. Um das bis auf die Register Ebene zu
> simulieren, muss man schon etwas mehr Aufwand treiben.

und wer wollte das wissen?

 Frank hatte gesagt, das die IP lösung einfacher ist. Dabei den Vorteil 
erwähnt

> - kein Treiber auf der PC seite erforderlich

und das stimmt nun mal nicht, wenn die Software eien COM erfordert.

von Viktor N. (Gast)


Lesenswert?

Was spricht denn gegen einen RS422 but, mit allen devices dran. Die 
Topologie ist ja eh Master-Slave. Mit dem PC als Master.

von B. S. (bestucki)


Lesenswert?

Viktor N. schrieb:
> Was spricht denn gegen einen RS422 but, mit allen devices dran. Die
> Topologie ist ja eh Master-Slave. Mit dem PC als Master.

Meine Geräte unterstützen das nicht. RS232 ist nicht für mehrere 
Teilnehmer auf einer Leitung ausgelegt. Einige Geräte senden nur auf 
Anfrage, lassen sich dann aber nicht mehr unterbrechen bis die 
Übertragung fertig ist, andere senden "einfach so" Daten raus. Bei den 
Eigenentwicklungen liesse sich das ja beheben, bei gekauften Geräte eher 
weniger.

Edit: Und dann wirds auch lustig, wenn alle gleichzeitig senden wollen. 
Auch wenn da noch irgendwas dazwischen hängt, das die Übertragungen 
verwaltet, RS422 ist nicht schneller als RS232

von Viktor N. (Gast)


Lesenswert?

>Edit: Und dann wirds auch lustig, wenn alle gleichzeitig senden wollen.
Auch wenn da noch irgendwas dazwischen hängt, das die Übertragungen
verwaltet, RS422 ist nicht schneller als RS232

Eben. Bei einem Master Slave sendet immer nur einer aufs mal, und der 
Master bestimmt wer. Ich ging davon aus, das Protokoll sein noch nicht 
festgelegt.

Und doch RS422 erreicht viel hoehere Geschwindigkeiten, das es 
differentiell mit definierter Impedanz ist. RS422 ist im wesentlichen 
RS485 ohne Richtungsumschaltung dafuer einem geshaerten 
(differentiellen)Rueckkabel. Das eine (differentielle) Kabel geht vom 
Master zu allen. Un das andere geht von allen zum Master.

von Frank (Gast)


Lesenswert?

Peter II schrieb:
> Es funktioniert nicht mit anwendungen, die einen Com-Port brauchen.

Ok, ich bin jetzt von eigenen Anwendungen ausgegangen. Die macht man 
dann einfach passend ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.