mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 -> RS485


Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abonniert... (interessiert mich auch)

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Detlef Wilken (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Detlef Wilken (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Christoph Beurer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Detlef Wilken (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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ß

Autor: Joline (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibts jede Menge Konverter inkl. Schematics:
http://www.rs485.com/pconverters.html

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.