RS232 -> RS485

Gast #221367
Hallo,

ich möchte gerne eine RS232 Schnittstelle verlängern.Da ich in der
Automatisierungstechnik tätig bin, weiß ich das es für Feldbusse die
RS485 Schnittstelle gibt, somit auch Wandler von RS232->RS485->RS232.
Allerdings kosten diese auch einiges.

Ich möchte gerne die Stzörsicherheit des RS485 Busses ausnutzen um ein
RS232 Signal über 500m zu transportieren (Baudrate von max. 9800).

Wenn ich an den RS232 Port vom PC einen MAX232 anhänge habe ich ja ein
TTL Signal.Mit diesem TTL Signal hätte ich einen MAX485 angesteuert.An
der anderen Seite das ganze wieder zurück RS485->RS232->PC.

Ist sowas möglich oder nur "Spinnerei" ?

Danke im vorraus !
Thorsten
Gast
Sollte gehen, aber du benötigst 2 RS485 Transceiver (pro Seite), wenn du
Vollduplex RS232 machen möchtest. Einen der ständig empfängt und einen
der sendet das gekreuzt pro Seite. RS485 ist normalerweise halbduplex.
Gast
Ich habe Umsetzung mit einem ATMega162 vorgenommen (hat 2 UART). Bei der
Anzahl an Controllern, die an meinem RS485 hängen werden, macht der eine
Controller den Kohl auch nicht mehr fett.

Ich habe mich für diese Variante entschieden, da eine Umsetzung von
MAX232 auf MAX485 meiner Meinung nach sehr schwierig ist. Habe bereits
einiges durchsucht, aber Umsetzer, die meine Bedürfnisse befriedigen,
habe ich damals nicht gefunden.

Der Vorteil meiner Variante ist, dass die RS485-Seite als
gleichwertiger Teilnehmer am Bus betrachtet werden kann. Der ATMega162
kann als Puffer dienen, damit am PC die Botschaft nicht nochmals
abgeschickt werden muß, falls das RS485 gerade belegt ist.

Den Schaltplan kann ich bei Bedarf schicken (Besteht nur aus MAX487,
MAX232, ATMega162 und diverse Kondensatoren

Gruß
Gast
Ich glaube der OP will eigentlich gar keinen BUS aufbauen sondern
einfach eine serielle Verbindung verlängern. Und dafür würde ich an
seiner Stelle dann einfach TX des einen Rechners über den RS232 zu TTL
und dann an einen auf TX gestellten RS485 Transceiver geben das ganze
dann zurück auf RS232 und an RX und die andere Richtung genauso. Dann
hast du zwar keinen echten BUS und benötigst das differentielle Signal
2 mal, aber das wäre das einfachste.
Gast
Danke für die vielen Antworten !

@ Detlef Wilken
Die Variante von Philipp reicht für mein Projekt dicke aus, aber für
ein anderes Projekt wäre Dein Vorschlag auch sehr interessant.Kannst
den Schaltplan mir gerne einmal zukommen lassen b.z.w hier posten.

Ansonsten noch als Info das ganze soll halbduplex sein.

Vielen Dank !
Thorsten
Gast
Wenn es Halbdupley sein soll und trotzdem beide Seiten mal was senden
sollen können musst du evtl. doch auf die Lösung von Detlef Wilken
zurückgreifen
Gast
Hier der Schaltplan zur Umsetzung von RS232 auf RS485

Ich verwende Halbduplex.
Alle Teilnehmer an RS485 sind gleichberechtigt (Jeder Teilnehmer kann
also auf RS485 zugreifen, wenn es nicht gerade ein anderer Teilnehmer
gibt, der aktiv zugreift.



Gruß
Angehängte Dateien:
Gast
Wie hast du das mit dem Protokoll gelöst? Ich hatte hier vor kurzem
schonmal gefragt nach einer guten Multimaster implementierung auf
Rs485. Wie läuft es bei dir? hast du Collision Detection?
Gast
Hallo Zusammen,

auf dem Savy_board von Erich Lins (www.chip45.com) wird als Option der
RS485 bus angeboten. Bei ihm werkelt diese am Com2 des Mega128. Der
normalerweise an diesem com-Port sitzende 232 wird einfach deaktiviert
und durch einen RS485 Bustein ersetzt.

Schaltplan auf der Homepage.

Gruß

Christoph
Gast
@Philipp:
Ja, Collision Detection habe ich:
Stimmt während des Sendens das empfangene Byte (Auch jedes gesendete
Byte löst einen Interrupt aus) nicht überein mit dem zuletzt gesendeten
Byte, liegt Datenkollision vor.
Für jedes gesendete Byte spendiere ich ein Bit, welches gesetzt wird,
sobald das entsprechende Byte gesendet wurde. Ist das Bit gesetzt, wenn
ein Interrupt empfangen wurde, wird der o.g Vergleich durchgeführt und
das Bit gelöscht

Gruß
Gast
Das Hauptproblem ist hier ja die Vollduplex-Eigenschaft von RS232. Wenn
mit der gleichen Anzahl Pins gearbeitet werden muss, kommt Halbduplex
als Ergebnis raus, und für RS485 benötigt man dann ein
Transmitter-Enable.

Wenn das Protokoll dementsprechend RTS (oder DTR) steuert - kein
Problem. Dann ist der ursprüngliche Ansatz ok, MAX232 plus MAX485. Wenn
man freilich das RTS aus dem MAX232 direkt als Transmit-Enable
verwenden, kommt inverse Logik raus, d.h. aktives RTS ist ein inaktiver
Transmitter, weil der Pin dazu bei den RS485-Chips aktive-high ist.

Alternative: CAN-Transceiver statt RS485-Transceiver verwenden.
Aufgrund von deren etwas anderer Arbeitweise ist ein inaktiver Kanal
identisch mit einem inaktiven Transmitter. Ein Transmitter-Enable wird
also überflüssig.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.