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
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.
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.
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.
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?
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.
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
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.
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.
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!
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.
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).
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.
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