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
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.
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ß
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.
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
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
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ß
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?
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
@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ß
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.