RS232 Switch

OP #3147305
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!
Gast #3147313
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.
Moderator (Firma: Titel) Persönliche Seite #3147317
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".
#3147323
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.
OP #3147332
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.
Gast #3147521
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
#3147581
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.
OP #3147593
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...
Persönliche Seite #3147891
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).
Gast #3149504
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?
Gast #3149507
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.
Gast #3149515
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.
Gast #3149648
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.
OP #3149747
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
Gast #3149770
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren