Forum: Mikrocontroller und Digitale Elektronik RxD und TxD gleichzeitig an RS232 Receiver und RS485 Receiver?


von anton (Gast)


Angehängte Dateien:

Lesenswert?

Hallo alle zusammen,

ist das folgendes möglich zu realisieren?


µC (RxD /TxD) signale gehen an RS232 und RS485 Transceiver 
"gleichzeitig".

Im Anhang befindet sich das grobe Blockdigramm zum Thema!

Danke für eure Informationen!

Gruß
Anton

von R. R. (elec-lisper)


Lesenswert?

TxD sollte kein Problem sein, weil da ein Ausgang 2 Eingänge ansteuert.
Aber umgekehrt geht nicht, weil hier die beiden RxD Ausgänge sich 
gegenseit
ansteuern. Wenn der eine High is und der andere Low kann u.U. ein hoher 
Strom fließen - je nach Ausgangs-Port-Aufbau.

PS: Was du tun könntest wäre evtl. ein OR-Logik-IC vor den RxD-Eingang 
am Controller schließen. Dann könnte es zwar zu kaputten Daten kommen, 
wenn beide empfangen, aber elektrisch sollte es keine Probleme geben.

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Robin R. schrieb:
> PS: Was du tun könntest wäre evtl. ein OR-Logik-IC vor den RxD-Eingang
> am Controller schließen.

Dicht daneben ist auch vorbei. UART braucht AND, also Pullup + Diode an 
jedem Ausgang. Bei hohen Baudraten >115200 nimmt man dann besser einen 
74xx AND Baustein.

: Bearbeitet durch User
von anton (Gast)


Lesenswert?

Danke für eure Antworten. @jim kannst du bitte evtl. das zeichnen wie es 
am besten beschaltet werden soll bzw. was du meinst?

von Frank K. (fchk)


Lesenswert?

Du kannst das ja immer nur wechselweise betreiben.

Dafür gibts fertige Lösungen, zB:

https://www.exar.com/content/document.ashx?id=21451

Da legst Du die 2 Inputs und 2 Outputs vom Transceiver auf einen SubD-9 
und kannst dann mit zwei Pins umschalten, ob Du RS232, RS422/RS485-FD 
oder RS485-HD haben willst.

fchk

PS: bei einzelnen Transceivern brauchst Du einen 74LVC1G08 im SOT23-5. 
Das ist dort die optimale Lösung. Die RXD von den Transceivern an die 
Eingänge des Gatters, der Ausgang des Gatters an RXD vom Controller.

Oder Du nimmst einen HC125 und einen HC126 und schaltest TXD und RXD 
wechselseitig. Der HC125 schaltet bei G=0 durch, der HC126 bei G=1. Das 
hat den Vorteil, dass der inaktive Ausgang wirklich ruhig ist, was für 
EMV deutlich besser ist - vor allem, wenn da ein Kabel dranhängt.

von R. R. (elec-lisper)


Lesenswert?

Jim M. schrieb:
> Robin R. schrieb:
>> PS: Was du tun könntest wäre evtl. ein OR-Logik-IC vor den RxD-Eingang
>> am Controller schließen.
>
> Dicht daneben ist auch vorbei. UART braucht AND, also Pullup + Diode an
> jedem Ausgang.

Warum ist ein Pull-Up erforderlich, geben die Transceiver-Bausteine 
keine definierten Pegel aus?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Robin R. schrieb:
> Warum ist ein Pull-Up erforderlich, geben die Transceiver-Bausteine
> keine definierten Pegel aus?

Doch, aber der geht durch die Diode flöten.

von Georg (Gast)


Lesenswert?

Frank K. schrieb:
> Die RXD von den Transceivern an die
> Eingänge des Gatters, der Ausgang des Gatters an RXD vom Controller.

Dann muss er aber sicher sein, dass immer nur auf einer Leitung was 
ankommt, dass also 232 und 485 nur alternativ benutzt werden, aber auch 
dann könnten Störungen auftreten. Besser ist es, den unbenutzten RxD 
ganz abzutrennen.

Georg

anton schrieb:
> µC (RxD /TxD) signale gehen an RS232 und RS485 Transceiver
> "gleichzeitig".

Das ist sehr ungenau und missverständlich ausgedrückt, s.o.

Georg

von Ruediger A. (Firma: keine) (rac)


Lesenswert?

Hm, was mir spontan dabei einfällt ist, ob Du tatsächlich die beiden 
Schnittstellen gleichzeitig bedienen willst - da gibt es natürlich 
Kollisionen auf der Rx Seite (vom uC aus gesehen).

Also können die beiden PHYs gegenseitig ausschliessend sein, ausser 
natürlich der Partner auf RS232 Seite ist ein "erweiterter Busknoten," 
filtert also an Hand des Protokolls auf Grund seiner Geräteadresse die 
für ihn bestimmten Pakete aus. In dem Fall ist es aber schwer zu 
glauben, dass dieser Slave nicht auch schon mit im RS485 Bus hängen 
würde...

Da Du in deiner Zeichnung aber schon 5-Draht RS485 (also peer to peer) 
ansetzt, scheint es kein Busfähgiges Protokoll zu sein, und damit ist 
der tatsächliche gleichzeitige Betrieb kollisionsfrei nicht denkbar.

von Amateur (Gast)


Lesenswert?

Tx sollte kein Problem sein. Es wird halt immer aus beiden Rohren 
gefeuert.

Um Rx auswerten zu können, ist zu beachten, dass Nix auch etwas ist. Der 
jeweils "ungenutzte" Ausgang hat ja trotzdem einen Pegel. Da aber sowohl 
Low, als auch High zulässig sind, ist unbenutzt auch ein Signal.

von anton (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich möchte auch nicht gleichzeitig benutzen sondern eine davon benutzen. 
Mit dieser Beschaltung ginge es nicht.

Außerdem DE & \RE von RS485 Transceiver sind von einem µC-Pin aus 
angesteuert!

von Amateur (Gast)


Lesenswert?

Etwas durchsichtiger wird das Ganze, wenn Du den beteiligten Kandidaten 
Namen gibst. Z.B. MAX232 oder so.

Muss aber nicht sein.

Manche Treiber haben sogar "echte" Enables oder 3-State Anschlüsse.

von anton (Gast)


Lesenswert?

die folgenden komponenten werden verwendet:

für RS232: ADM3251

für RS485: ADM2587

von Ruediger A. (Firma: keine) (rac)


Lesenswert?

anton schrieb:
> Hi,
>
> ich möchte auch nicht gleichzeitig benutzen sondern eine davon benutzen.
> Mit dieser Beschaltung ginge es nicht.
>
> Außerdem DE & \RE von RS485 Transceiver sind von einem µC-Pin aus
> angesteuert!

Sorry wenn ich mich unklar ausdrücke -

es geht NICHT um die Physik, sondern um die Logik!

Angenommen Du schickt ein Steuerbyte vom Master an beide Busse, das 
bedeutet "Sende mir etwas." Wenn jetzt Slaves von beiden Schnittstellen 
etwas annähernd gleichzeitig antworten, muss es ja zwangsläufig 
Kollisionen geben.

Also wenn ich Dich richtig verstehe, willst Du über dasselbe Protokoll 
auf beiden Bussen senden, wobei Du aber softwaremässig auswählen willst, 
über welche Schnittstelle jeweils die Kommunikation geht?

Wie gesagt musst Du dazu ein Protokoll fahren, das es den Slaves 
erlaubt, auf ihre Adresse zu filtern. Wie willst Du sonst verhindern, 
dass der peer auf der RS232 Schnittstelle antwortet, wenn der Master 
eine Antwort auf dem RS485 Bus erwartest? Umgekehrt geht es, klar, über 
die Steuerleitungen, aber brauchst Du nicht sonst noch eine externe 
Logik, die Rx auf der RS232 Seite abstellt, wenn Du auf dem RS485 Bus 
kommunizieren willst?

M.M. nach wäre es fast einfacher, Alles über den RS485 Bus abzuwickeln 
und die Konvertierungslogik an dem einen Slave einzubauen, der RS232 
kann. Die Serialisierung wäre eh erforderlich (also keinen Zeitverlust), 
und der RS485 Bus ist physikalisch praktischer (wesentlich längere 
Leitungen und bessere Störsicherheit).

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Robin R. schrieb:
> Warum ist ein Pull-Up erforderlich, geben die Transceiver-Bausteine
> keine definierten Pegel aus?

 Ja, aber nicht wenn eine Diode dazwischen hängt.

 Jim M.  hat auch nachher eine Lösung mit AND vorgeschlagen.
 Mit OR könnte es keinen Startbit bzw. keine Nullbits geben.

von Georg (Gast)


Lesenswert?

anton schrieb:
> Außerdem DE & \RE von RS485 Transceiver sind von einem µC-Pin aus
> angesteuert

Ja aber: für RxD von der RS232-Seite nützt das garnichts, und wenn du 
den Empfänger von RS485 abschaltest, schaltest du den Treiber ein - 
keine gute Idee, wenn du eigentlich über RS232 kommunizieren willst.

Problemlos wäre nur eine vollständige Umschaltung von TxD und RxD.

Georg

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.