Forum: Mikrocontroller und Digitale Elektronik RS232 -> RS485


von Thorsten (Gast)


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

von Hannes L. (hannes)


Lesenswert?

abonniert... (interessiert mich auch)

von Philipp (Gast)


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.

von Detlef Wilken (Gast)


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ß

von Philipp (Gast)


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.

von Thorsten (Gast)


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

von Philipp (Gast)


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

von Detlef Wilken (Gast)


Angehängte Dateien:

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ß

von Philipp (Gast)


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?

von Christoph Beurer (Gast)


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

von Detlef Wilken (Gast)


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ß

von Joline (Gast)


Lesenswert?

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

von A.K. (Gast)


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.

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.