RS232 <=> RS485 Konverter

Hallo,

ich möchte mir einen Halfduplex RS232 RS485 Konverter bauen. Wo bekomme ich Baupläne her und wie kann ich das Gerät hinterher über eien Handshake-Leitung in C ansprechen / steuern?

Ich habe zwar schon einen Schaltplan aus einem Buch (Serial Port Complete Seite 201 allerdings mit einem RS232CPE-Modul), aber der scheint nicht zu funktionieren. Die Schaltung hier besteht nur aus 3 Modulen (9Pol-SubD-Stecker / -Buchse, MAX232CPE und sn75176BP-Transceiver)

Ich möchte mich in das Thema RS232 und RS485 einarbeiten und würde diesbezüglich gerne auch ein paar Beispiele ausprobieren.

Könnt Ihr mir Tipps geben? Worauf muss ich achten? Habt Ihr evtl. Quellcodes und Schaltpläne die Ihr mir zur Verfügung stellen würdet?

Vielen Dank für Eure Bemühungen

Michael Post

Reply to
Michael Post
Loading thread data ...

Michael Post schrub im Jahre 02.02.2005 10:59:

Datenblätter und Application-Notes von Maxim zum MAX232 und MAX485.

-- B.Eckstein, snipped-for-privacy@ivu.de Cheap, Fast, Good - pick any two of them Die FAQ zu de.comp.hardware.netzwerke:

formatting link
Mozilla-Tips:
formatting link
formatting link

"Auch wenn ich die Funktionsweise dieser Konsole nicht kenne, glaube ich nicht, dass sie rauchen sollte"

Reply to
B.Eckstein

Billige RS232 RS485 Converter funktionieren so, dass sie mittels ich glaube der DSR Portleitung den Transveiver auf senden schalten und dann die Daten eben ausgeben.

RS232 MAX232 RS485 Transceiver

Solche Dinger verkauft auch Conrad, für 40? Bauteilkosten ~3?

Die professionellere Lösung ist die Verwendung eines Microcontrollers z.b. Atmel 90S2313. D.h. Die Baudrate wird z.B. fest oder über Dip-Schalter eingestellt nach empfang von Daten über die Serielle Schnittstelle Applikation -> Microcontroller behandelt dieser die RS485 Signale. Dessweiteren könnte man RS485 seitig höhere Geschwindigkeiten realisieren und über entsprechene Protokolle die Multimasterfähigkeit ausnützen.

RS232 MAX232 Microcontroller RS485 Transveiver

Such bei Google mal nach NUDAM RS232 RS485 Wandler, die Anleitung ist zum Grundlegendem Verständtnis recht interressant, unter anderem werden die Betriebsmodi erklärt.

Reply to
Michael Schneider

Michael Post schrieb:

Richtig, Du brauchst ausser TXD/RXD mindestens eine Handshakeleitung zur Sende-/Empfangsumschaltung des RS485 Transceivers.

Das sollte auch reichen, stellt sich nur die Frage der Versorgung des Ganzen. Wenn der Strombedarf der Schaltung Ich möchte mich in das Thema RS232 und RS485 einarbeiten und würde

Nach dem Senden auf Empfang schalten, dazu vor der Antwort etwas Zeit lassen, am RS485-Bus darf natürlich nur einer hängen der unaufgefordert sendet, aber viele dürfen antworten (natürlich nicht durcheinander, nur nach individueller Ansprache, z.B. Adressierung im Protokoll). "Rundsprüche" an alle sind möglich, dürfen aber nicht quittiert werden (es sei denn man trickst mit den Antwortzeiten indem man sie von der Adresse abhängig macht). Bei längeren Leitungen und/oder höheren Datenraten sollte man die Leitungen an beiden Enden abschliessen, z.B. mit 120Ohm zwischen A und B, 560Ohm von A nach VCC, 560Ohm von B nach GND. Schutzdioden an A&B kann man auch noch vorsehen, wenn man sich nicht auf einen der ESD geschützten, Fail-Save oder was auch immer verlässt. Eine Masseverbindung sollte trotz des differentiellen Signals vorhanden sein, bei grösseren Potentialdifferenzen muss man dann Optokoppeln (falls nötig nochmal fragen wegen der Koppler).

Master: (/RE,DE) auf High (also nach einem Max232, der invertiert!) Telegramm senden evtl. warten bis Sendepuffer leer (/RE,DE) auf Low

Slave: Start mit (/RE,DE) auf Low Telgramm wird empfangen Etwas warten (erübrigt sich meistens da ja irgendeine Aktion folgt) (/RE,DE) auf High Antwort-/Quittungstelegramm senden evtl. warten bis Sendepuffer leer (/RE,DE) auf Low

Wenn Dein Master ein PC ist, musst Du schauen wie Du die Handshakeleitung bedienst, u.U. reicht auch eine Standardkonfiguration. Es gibt aber auch DLLs irgendwo im Netz die das Ganze vereinfachen sollen, bei manchen (oder allen?) Windows Versionen soll das mit Bordmitteln nicht ganz trivial sein.

Sehr hilfreich ist ein Oszilloskop um zu sehen wo es hakt.

Jörg.

Reply to
Joerg Schneide

formatting link

Gruss,

--
Jonas
Reply to
Jonas Stein

Nicht unbedingt, bei konstanter Bitrate koennte z.B. auch mittels Monoflop eine automatisch Umschaltung der Datenrichtung erfolgen (das Startbit triggert das Monoflop, das auf SENDEN schaltet und nach Ablauf von 9-10 Bitzeiten wird wieder auf Empfang geschaltet). Die Datenrichtungsumschaltung bei PC's ist u.U. recht problematisch (weil recht langsam und und nicht konstant).

Grundsaetzlich richtig. Die Verbindung von A und B ueber einen Widerstand nach VCC und Masse soll aber dafuer sorgen, dass wegen floatens am Bus keine zufaelligen Bits/Bytes erkannt werden, wenn ALLE Teilnehmer auf Empfang sind (und das sind sie zwischendurch immer wieder). Fuer eine Verbesserung der Signalqualitaet sorgen sie aber nicht.

Allerdings glaube ich, dass 560 Ohm zu klein ist. Bei jeweils 1440 Ohm hat man an dem 120Ohm Widerstand schon die 0.2V Threshold zwischen A und B, daher sollte man wohl z.B. 2x 1.5k ode so waehlen.

Ach ja, nur an einem Ende des Busses sollten diese beiden Widerstaende angebracht werden (die beiden 120Ohm natuerlich an beiden).

Meine Erfahrung zeigt, dass die Treiber (MAX485 und Konsorten) z.B. 24Volt (eine gaengige Spannung in der Industrie) nicht verkraften, auch nicht die ESD-Typen. Falls das passieren kann, dass jemand die Betriebsspannung versehentlich auf A oder B legt, braucht man Serienwiderstaende (leider verschlechtern die die Signalqualitaet wieder).

Unbedingt, ausser es sind nur ein paar Meter.

Ich bin skeptisch, ob es sich lohnt, so einen Koppler selber zu bauen. Sinnvoll ist das meiner Meinung nach nur als Teil einer groesseren Schaltung, sonst sollte man lieber einen fertigen verwenden.

Allerdings ist die Qualitaet der zu kaufenden Dinger sehr verschieden. Ich habe die besten Erfahrungen mit den ICP 7520 Dingern gemacht, haben automatische Datenrichtungsumschaltung (bei Baudraten zwischen 1200 und 115200 Baud!!!) und sind teilweise galvanisch getrennt. Sehr robuste Industriequalitaet (habe die Dinger in einem Schotterwerk eingesetzt, da ist der Teufel los ;-). Gibts so ab 60 Euro das Stueck.

LG,

--
Bernhard Roessmann
Don't Fear The Penguins!
Reply to
Bernhard Roessmann

Man soll eben nichts posten, wenn man wegen Erkaeltung eigentlich im Bett liegen sollte ;-)

Zwischen A und B sollen natuerlich MINDESTENS die 0.2V anliegen (nicht maximal), ausserdem liegen durch den zweiten 120 Ohm Widerstand am anderen Ende des Bus letztlich 60 Ohm zwischen A und B.

Damit ergibt sich ein Widerstandswert von MAXIMAL 720 Ohm von A zu +5V und von B zu GND. Viel kleiner sollte man ihn im Hinblick auf die Belastung der Treiberschaltung und damit der Signalqualitaet nicht waehlen, aber der Wert von 560 Ohm ist sicherlich ok.

Sorry nochmal fuer den Unsinn, den ich da im Fieberwahn gepostet habe ;-)

LG,

--
Bernhard Roessmann
Don't Fear The Penguins!
Reply to
Bernhard Roessmann

Hallo,

Bernhard Roessmann schrieb:

Würde ich nicht machen, wenn man doch mal die Datenrate ändern muss rennt man den Monoflops in jedem Gerät hinterher.

Aber doch nur wegen irgendwelcher M$-Standard-Libs? Für professionelle Lösungen wäre eine RS485-Karte eh sinnvoller.

Es geht auch an beiden Enden, man hat dann irgendwas um 80 Ohm an jedem Ende, das sollte im Rahmen liegen. Vorteil bei Leitungsbruch: Alle sehen definierten Pegel.

Serienwiderstände sind von Übel, habe gerade die Erfahrung gemacht das dann wenige Meter Leitung über Go/No-Go entscheiden können. Und es waren nur einige 10-100Ohm. Ist ja auch logisch wenn man DC-Terminiert. Einen echten Schutz gegen niederohmige Überspannungen hab ich auch nicht, am fertigen System soll aber sowieso kein Anwender mehr ohne Rücksprache basteln.

Ich nehme PC400, reicht bei meinen Baudraten, wichtig ist annähernd gleiches On/Off Timing. Für /RE reicht meist ein billiger 1mA-Typ.

Wäre mir zu teuer, es hängen schonmal 10 und mehr Slaves am Bus. Von Maxim gibts es "Quasi-getrennte" Treiber (kapazitiv) bis 50V, aber auch Komplett optoentkoppelte im Dil24 oder 28. Sind aber auch nicht gerade Billig.

Gute Besserung!

Jörg.

Reply to
Joerg Schneide

Bei einer Änderung der Datenrate rennt man sowieso jedem Gerät hinterher (Firmwareupdate). Das Monoflop sollte aber natürlich digital aufgebaut sein, damit man im Feld nicht mit Messgeräten hantieren, sondern nur einen Dipschalter umstellen muss.

Jein. Auch Linux ist "out of the box" nicht in der Lage, die Richtungsumschaltung mit einem brauchbaren Timing zu erledigen. Das geht in beiden Fällen nur mit mehr oder weniger massiven Eingriffen in den Systemkern, was man vielleicht bei einer Embedded-Kiste machen will, aber bestimmt nicht bei einem Server oder Arbeitsplatzrechner, der auch noch andere Aufgaben hat.

Auch die wälzen die Richtungsumschaltung meist auf die Software ab :-(.

Hergen

Reply to
Hergen Lehmann

Hergen Lehmann schrieb:

Also wenn schon einen Dip Switch dann doch lieber direkt zum Baudratenumstellen am Gerät, als zusätzlich noch ein Flop. Mal ganz abgesehen von der Möglichkeit einer Baudratenumschaltung per Protokoll (ein bischen Software) oder gar einem Firmwareupdate über RS485 (o.k. "einfach" ginge das in meinem Fall nur über Vollduplex, dann fäll aber auch das ursprüngliche Problem weg :-).

Versteh ich nicht, bei den meisten UARTs lassen sich doch Steuerleitungen direkt setzen, ob das letzte Byte raus ist lässt sich auch abfragen, was brauchts da noch an Timing? Naja wer sowas am PC braucht, muss halt DOS laufen lassen oder einen kleinen Controller mit 2 UARTS dazwischensetzen.

Dabei gibt (gab?) es UARTs mit auto-RTS o.ä. damit und einer PCI-AT-Bridge sollte sowas problemlos möglich sein. Aber sowas würde heute wohl keiner mehr Bauen. Gibts eigentlich fertige USB-RS485 Converter?

Jörg.

Reply to
Joerg Schneide

Zum einen lässt sich das "Sender leer" bei den heute üblichen UARTs mit Fifo nicht so ohne weiteres aus dem Anwendungsprogramm abfragen, zum anderen muss die Umschaltung nach dem Stiobit wirklich SOFORT innerhalb weniger uS erfolgen, denn die Gegenstelle beginnt unter Umständen sehr schnell, die Antwort senden. Das ginge nur per Interrupt. Aber an genau den kommst Du aus dem Anwendungsprogramm nicht heran, weil moderne Betriebssysteme darauf bestehen, das Interrupthandling selbst zu übernehmen.

Das ist dann aber deutlich mehr Aufwand als ein Monoflop... ^_-

Ja. Und zumindest einige der darin verbauten Chips können auch Auto-RTS. Im Zweifelfall baut man's selbst: ein FT232, ein 75176 und etwas Kleckerkram.

Hergen

Reply to
Hergen Lehmann

Das schon, aber meistens braucht man nur eine oder nur wenige, dann muss man halt per Jumper oder so umschalten. Aber elegant ist das nicht, das ist schon klar, nur recht einfach eben.

Eigentlich wegen der ueblichen Prozessoren und Uarts (ist meistens nicht moeglich, zu erfahren, wan das letzte BIT rausgegangen ist...). Ausserdem sind die Latenzzeiten ueblicher Betriebssystem arg lange, zumindest worst case, wenn man das per SW machen will.

Das dachte ich mir auch schon, ich habs ehrlich gesagt noch nicht gewagt, Serienwiderstaende reinzutun :-)

Bei meinen Anwendungen meistens ein PC und sonst uController-Slaves, da brauche ich dann nur einen Konverter (am PC). Ausserdem, der von mir genannte beherrscht offenbar automatische Baudrichtungsumschaltung bei beliebigen Baudraten. Ist eigentlich nur ein PLA drin, sonst nicht viel. Wuerde mich interssieren, wie die das machen. Vielleicht denke ich mal drueber nach, wenn mir was einfaellt, poste ich hier ;-)

Danke :-) inzwischen wieder halbwegs auf dem Dampfer.

LG,

--
Bernhard Roessmann
Don't Fear The Penguins!
Reply to
Bernhard Roessmann

Hallo Bernhard,

Was wuerdes Du denn fuer einen ESD-Schutz empfehlen? Wie wuerde man die Schutzdioden verschalten?

Welche Optokoppler wuerden sich denn anbieten? Worauf muss man achten?

Schoenen Dank und Gruss

Harald

Reply to
Harald Korth

Ich meinte mit "24V an A oder B" keine durch ESD erzeugte Spannung, sondern eine laenger andauernde Gleichspannung, z.B. die Geraeteversorgung, an A und B. Dagegen hilft keine ESD-Schutzbeschaltung bzw. man muesste auf jeden Fall Serienwiederstaende in die A/B Leitung einfuegen, was sehr unangenehm bezueglich der Signalqualitaet ist.

Ansonsten ist eine uebliche ESD-Beschaltung mit Klemmdioden realisiert (also von GND zur Signalleitung eine Schottky-Diode und von der Signalleitung auf VCC eine weitere Schottky-Diode.

LG,

--
Bernhard Roessmann
Don't Fear The Penguins!
Reply to
Bernhard Roessmann

Harald Korth schrieb:

Ergänzend zu Bernhards Antwort: Es kommt mal wieder auf den konkreten Fall an, d.h. in welcher Umgebung soll das Teil laufen, wer installiert es wie.

Grundsätzlich ist es unmöglich und auch sinnlos eine Elektronik gegen jeden erdenklichen Fehlerfall zu schützen.

Konkretes Beispiel: Ich schütze auch nur mit Klemmdioden, bei richtig niederohmiger Überspannung geht also auf jeden Fall was kaputt. Das liegt dann aber in der Verantwortung des Anwenders weil komplette Systeme mit fertiger Verkabelung geliefert werden. Da muss man sich schon anstrengen um höhere Spannungen anzulegen. Wenn jemand dran Basteln will muss er die Doku bemühen oder fragen. Mit den vorhandenen Steckverbindern soll er aber auch mal rumstecken können. Wenn man eine Verdrahtung mittels Klemmen vorsieht ist das Risiko natürlich ungleich grösser, dann kann man z.B. Treiber einsetzen die 30V oder gar 60V DC aushalten.

Siehe anderes Posting meinerseits, zusätzlich müssen die Koppler natürlich grundsätzlich die Baudrate schaffen. Beim genannten PC400 sollte man aber (wie immer) genau ins Datenblatt schauen, sämtliche Abhängigkeiten (auch der Temperatur!) finden und worst case betrachetn. Insbesondere eine Differenz zwischen tPD_LH und tPD_HL kann sich bei höheren Baudraten übel auswirken.

Jörg.

Reply to
Joerg Schneide

Ack. Es soll auch schon mal vorkommen, daß schludrige Monteure 230V auf Klemmen legen, die deutlich mit 24V beschriftet sind. Da KANN man einfach nicht mehr vorbeugen.

Noch nen anderer Vorschlag: zwei TAZ-Dioden von a und b gegen Masse. Wir nehmen für RS485 immer die BZT03C7V5. Die Dinger halten kurzzeitig etliche Ampere aus, so daß gute Chancen bestehen, daß die Netzteilsicherung vor der Schnittstelle aufgibt.

Hergen

Reply to
Hergen Lehmann

Am Fri, 11 Feb 2005 10:13:57 +0100 schrieb Bernhard Roessmann :

Ev. könnten hier Polyfuses (PTCs) helfen.

--
Martin
Reply to
Martin

Zu langsam.

LG,

--
Bernhard Roessmann
Don't Fear The Penguins!
Reply to
Bernhard Roessmann

mit dem ziemlich unangenehmen Effekt, daß nicht nur der Treiber, sondern die ganze Schaltung geröstet wird, wenn auf Vcc kein Überspannungsschutz vorhanden ist.

Eher sind Transzorbdioden nur von Signal gegen Masse und bei zu erwartenden heftigen Entladungen das (übliche?) Konzept eines langsamen, aber robusten Ableiters (spricht in eingen 10uS an, kann dann einige 100A -1000A ableiten), einer Verzögerung (Induktivität) und eines schnellen, aber weniger robusten Ableiters (

Reply to
Michael Wieser

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.