Forum: Mikrocontroller und Digitale Elektronik RS232 über RS485-Strecke brücken?


von Jens B. (sunnyman)


Lesenswert?

Hallo Forum,

folgende Ausgangslage:

ein RFID-Devboard von Pollin
ein Linux-PC mit Steuersoftware, der weit davon weg steht

Nun war die Idee, an das RFID-Board einen RS232-RS485-Konverter zu 
hängen und an den PC (mangels RS232-Port) einen USB-RS485-Konverter.

Ich habe an Hardware:

Hexin Technology HXSP-485B
Hexin Technology HXSP-2108F

Leider funktioniert das irgendwie überhaupt nicht, ich bekomme über die 
Strecke nichts übertragen. Sprich selbst mit zwei PCs und Terminal 
bekomme ich keine Zeichen übertragen.

Nach viel Probiererei und so fiel mir dann mal auf, dass es bei RS485 ja 
überhaupt kein festes Protokoll gibt. Daher die Frage: kann das so 
überhaupt funktionieren, oder brauche ich bspw. zwingend zwei gleiche 
RS232-RS485-Konverter?

Dann kamen noch an Fragen auf:
der Bus muss doch beidseitig mit 120 Ω terminiert werden, oder?
Etwas Rätsel gaben uns auch die Ports "+9V" und "GND" auf den 
Breakout-Platinen der Konverter auf. Welche der Konverter müssen 
sinnvollerweise mit Spannung versorgt werden?
Die Beschreibung liest sich beim USB-Konverter so, dass der USB-Port 
genug Strom für den Konverter liefert.

Das RFID-Board hat sicherlich keinen Saft auf dem RS232; die 
Beschreibung liest sich hier so, dass man den Eingang mit 9V versorgen 
sollte, wenn der Pegel auf dem RS232 unter 5V liegt.

Bin für Tipps sehr dankbar :)

von Daniel F. (df311)


Lesenswert?

dass es kein "richtiges" RS-485 Protokoll gibt, kann Fluch und Segen 
sein.
In deinem Fall eher Segen, da du ganz einfach z.B. 9600 8N1 übertragen 
kannst und dir über das Protokoll keine Gedanken machen musst...

von Jens B. (sunnyman)


Lesenswert?

Daniel F. schrieb:
> In deinem Fall eher Segen, da du ganz einfach z.B. 9600 8N1 übertragen
> kannst und dir über das Protokoll keine Gedanken machen musst...

Ja Okay, aber meine Frage ging jetzt in die Richtung ob das, was der 
RS232-RS485-Konverter über RS485 rausbläst halt vom USB-RS485-Adapter 
auch "verstanden" wird und umgekehrt, deshalb.

Aber wenn das nicht das Problem ist, frage ich mich: was ist dann das 
Problem?

von H.Joachim S. (crazyhorse)


Lesenswert?

Mit Vollduplex geht das problemlos ohne sich um irgendwas kümmern zu 
müssen. Also eine Vierdrahtleitung, mit MAX488 o.ä.
Willst du Halb-Duplex übertragen, kommst du nicht umhin, entweder die 
Originalsoftware anzupacken oder auf beiden Seiten was "Intelligentes" 
dazwischenzupacken, was Daten puffert und sich um die 
Richtungsumschaltung kümmert.

von Michael (Gast)


Lesenswert?

Arbeitet dein RFID-Devboard auf der Schnittstelle mit TTL/CMOS oder 
RS232 Pegeln?

von Jens B. (sunnyman)


Lesenswert?

H.joachim Seifert schrieb:
> Mit Vollduplex geht das problemlos ohne sich um irgendwas kümmern zu
> müssen. Also eine Vierdrahtleitung, mit MAX488 o.ä.

Vollduplex fällt allein schon deswegen flach, weil der 
RS232-RS485-Konverter kein Vollduplex kann.

Die Software anzupassen ist kein Problem, weil ich beide Seiten selbst 
geschrieben habe :)

Wie "schalte" ich denn da die "Richtung" um? In der Doku zu dem 
Konverter steht dazu z. B. jarnüscht.

von Jens B. (sunnyman)


Lesenswert?

Michael schrieb:
> Arbeitet dein RFID-Devboard auf der Schnittstelle mit TTL/CMOS oder
> RS232 Pegeln?

"Mein" RFID-Devboard ist das Devboard von Pollin:
<http://www.pollin.de/shop/dt/MDQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_RFID_125kHz_Empfaenger.html>;

Da vor der DB9-Buchse ein MAX232 sitzt, würd ich mal auf RS232-Pegel 
tippen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Jens B. schrieb:
> Vollduplex fällt allein schon deswegen flach, weil der
> RS232-RS485-Konverter kein Vollduplex kann.
>
> Die Software anzupassen ist kein Problem, weil ich beide Seiten selbst
> geschrieben habe :)
>
> Wie "schalte" ich denn da die "Richtung" um? In der Doku zu dem
> Konverter steht dazu z. B. jarnüscht.

RS232 ist von Hause aus erstmal vollduplex. Das heisst nichts weiter, 
als das zeitgleich sowohl gesendet als auch empfangen werden kann. Beim 
Halbduplex muss der Übertragungskanal für beide Richtungen genutzt 
werden. Wie die Umschaltung geschieht, ist erstmal egal.

http://www.maxim-ic.com/images/appnotes/367/367Fig05.gif
fig. b,

von Falk B. (falk)


Lesenswert?

@  Jens B. (sunnyman)

>"Mein" RFID-Devboard ist das Devboard von Pollin:
><http://www.pollin.de/shop/dt/MDQ5OTgxOTk-/Bausaetz...

>Da vor der DB9-Buchse ein MAX232 sitzt, würd ich mal auf RS232-Pegel
>tippen.

Ist auch so. Aber wieso glaubst du, dass RS232 nicht austreicht? Das 
Ding läuft mit 9600Baud, damit kommt man locker 100m und weiter. Auch 
mit RS232.

MFG
Falk

von Dietmar (Gast)


Lesenswert?

Jens B. schrieb:
> Wie "schalte" ich denn da die "Richtung" um? In der Doku zu dem
> Konverter steht dazu z. B. jarnüscht.

Ich kenne das nur so das die Konverter in Normalfall auf Empfang stehen. 
Willst du ein Zeichen senden schalten die für die Dauer des sendens um. 
Dazu muß denen aber bekannt gemacht werden wie viele Bits ein Zichen 
enthält und mit welcher Baudrate gesendet werden soll.
Alternativ gibt es auch Konverter die mit dem RTS Signal von der RS232 
umgeschaltet werden können.

von Jens B. (sunnyman)


Lesenswert?

Falk Brunner schrieb:
> @  Jens B. (sunnyman)
> Ist auch so. Aber wieso glaubst du, dass RS232 nicht austreicht?

Weil das RFID-Board an der Tür im Erdgeschoss angebracht ist und der 
Rechner für die Auswertung im 2. OG im Inneren des Gebäudes steht. Als 
Verbindungsleitung steht mehr sowas wie ein mehrfach unterbrochener 
"Klingeldraht" zur Verfügung, die Gesamtstrecke dürften auch gut und 
gern 120 m sein.

von Jens B. (sunnyman)


Lesenswert?

H.joachim Seifert schrieb:
> http://www.maxim-ic.com/images/appnotes/367/367Fig05.gif
> fig. b,

Achso, also was du meinst ist im Prinzip nur, dass ich nicht von beiden 
Seiten der RS232-Strecke gleichzeitig sende / empfange.

Die Anwendung arbeitet allerdings schon quasi passend dazu.

Allerdings habe ich auch probiert, zwei PCs mit dieser Strecke mit 
einander zu verbinden und habe auf beiden Rechnern minicom gestartet und 
dann beim einen bzw. anderen Rechner was ins Fenster getippt - ohne 
Erfolg.

von Falk B. (falk)


Lesenswert?

@  Jens B. (sunnyman)

>Verbindungsleitung steht mehr sowas wie ein mehrfach unterbrochener
>"Klingeldraht" zur Verfügung, die Gesamtstrecke dürften auch gut und
>gern 120 m sein.

Auch 120m überbrückt RS232 bei 9k6 problemlos.

MFg
Falk

von Jens B. (sunnyman)


Lesenswert?

Falk Brunner schrieb:
> @  Jens B. (sunnyman)
>
>>Verbindungsleitung steht mehr sowas wie ein mehrfach unterbrochener
>>"Klingeldraht" zur Verfügung, die Gesamtstrecke dürften auch gut und
>>gern 120 m sein.
>
> Auch 120m überbrückt RS232 bei 9k6 problemlos.

Ohne Zusatztricks?
Bliebe dann aber noch das Problem, dass ich nicht mit zwei Adern 
auskäme...

von gk (Gast)


Lesenswert?

Ausser der korrekten Verdrahtung der RS485 Verbindung gibt es zwei Dinge 
zu beachten. Erstens die Stromversorgung der RS 485 Treiber. Das sollte 
auf PC Seite über USB wohl funktionieren. Auf der RFID-Seite ist mir das 
nach dem Überfliegen der Doku nicht ganz klar. Notfalls erstmal 5V an 
den vorgesehenen Pin legen. Zweitens muss die Datenrichtung auf beiden 
Seiten entsprechend umgeschaltet werden. Am RS-486 Treiber wird das über 
den DE-Pin erreicht. Der muss entsprechend angesteuert werden, z.B. über 
RTS der RS-232. Oder er wird automatisch umgeschaltet, wenn ein Zeichen 
gesendet wird. Auch das geht aus der Doku nicht so richtig klar hervor. 
Transparent Mode könnte darauf hindeuten.

gk

von H.Joachim S. (crazyhorse)


Lesenswert?

Jens B. schrieb:
> Bliebe dann aber noch das Problem, dass ich nicht mit zwei Adern
> auskäme...

Hm, du hast keine Masse dabei?? Also wirklich nur 2 Einzeladern? Dann 
wundert es mich nicht, dass es nicht funktioniert :-)

von Hermann (Gast)


Lesenswert?

Ich vermute einen prinzipiellen Fehler. Die RS232 benötigt ein 
High-Ruhepotential auf der TxD/RxD-Leitung, da der Übergang auf Low das 
Startbit definiert. Die RS485 kennt aber kein Ruhepotential, da bei Ruhe 
TriState vorgeschrieben ist. Ohne besondere Maßnahmen kann also die 
Umsetzung RS485->RS232 dieses Startbit nicht erhalten. Ich kann auch 
nicht erkennen, dass deine Konverter für die andere Richtung vorgesehen 
sind - allerdings muss ja eine Antwort empfangen werden. Um dieses 
Problem auszuschließen, miss doch mal, ob das Ruhepotential auf beiden 
RS232 High ist. Dies war jedenfalls das Problem bei meinem 
Selbstbau-Konverter. Dort habe ich dieses grundsätzliche Problem mit 
einem unsymmetrischen Abschlusswiderstand gelöst.
Mit einem Fertig-Billig-Konverter hatte ich das Problem, dass der 
RS485-Treiber zeitweilig keine Versorgungsspannung bekam. Die wird aus 
dem Negativ-Potential der freien RS232-Ports gewonnen. Der Pegelwandler 
war falsch beschaltet und lief deshalb manchmal nicht an. Nach 
entsprechender Lötarbeit lief er dann, der Konverter hatte aber weitere 
Probleme. Die Versorgung der Treiber würde ich auch nachmessen.
Vergiss auch die Abschlusswiderstände auf beiden Enden der RS485 nicht, 
sie sind meistens nicht in den Konvertern eingebaut, da der Konverter ja 
nicht das Ende der Leitung sein muss.

von Hermann (Gast)


Lesenswert?

gk schrieb:
> Zweitens muss die Datenrichtung auf beiden
> Seiten entsprechend umgeschaltet werden. Am RS-486 Treiber wird das über
> den DE-Pin erreicht. Der muss entsprechend angesteuert werden, z.B. über
> RTS der RS-232

Habe Deinen Beitrag erst jetzt genau gelesen.
Stimmt: Bei meinem Billig-Konverter und dem Eigenbau wird jedes Zeichen 
einzeln übertragen und jedes Mal DE geschaltet. Die Ansteuerung über RTS 
geht in der Praxis nicht - ich bin jedenfalls kläglich gescheitert. 
Windows kann die RS232 nur asynchron ansteuern, das bedeutet, man hat 
keine Kontrolle, wann der String eigene gesendet ist. Entweder man 
schaltet seinen eigenen String ab, oder man muss ewig warten (viele ms) 
weil Windows keine Echtzeit kann.
Das Ergebnis: ein Billig-Konverter schaltet DE synchron mit dem Signal 
(total krause Ansteuerung) und ein besserer braucht einen µP mit 2 UART.

von gk (Gast)


Lesenswert?

Ich habe hier einen industriellen Converter, der auch die automatische 
Umschaltung macht. Das funktioniert tadelos. Wenn man Programme benutzen 
will/muss die für die RS-232 geschrieben wurden geht das auch nicht 
anders.
Ich denke, dass im vorliegenden Fall das Senden vom PC aus funktioniert. 
Daher erstmal die Verbindung PC --> RFID zum Laufen bringen. Zum 
Beispiel per Software dauerd was senden und schauen was ankommt. Ausser 
dem DE-Signal muss auch das RE-Signal am RS-485 Baustein angesteuert 
werden. Das ist meistens mit DE direkt verbunden. Besonders hilfreich 
wäre natürlich ein Oszilloskop zur Fehlersuche.
gk

von Hermann (Gast)


Lesenswert?

Ich habe mal in die Bedienungsanleitung des Hexin Technology HXSP-485B 
gesehen. Die Kopplung zweier Module über RS485 ist vorgesehen. 
Vielleicht ist es ja ein ganz dummer Fehler:
- Ist die Baudrate auf beiden Seiten richtig eingestellt?
- Ist die Polarität der RS485 auf beiden Seiten richtig? Bei mehrfach 
unterbrochenem Klingeldraht ist das ja schnell passiert.

Jens B. schrieb:
> Als Verbindungsleitung steht mehr sowas wie ein mehrfach unterbrochener
> "Klingeldraht" zur Verfügung, die Gesamtstrecke dürften auch gut und
> gern 120 m sein.
Habe ich da richtig gelesen? Das geht ja wohl gar nicht!! Ein twistet 
pair Kabel ist ja wohl ein Muss! Das steht in jeder Beschreibung über 
RS485. Sonst passt auch der Standard-Abschlusswiderstand nicht und 120m 
kannste wohl knicken. Ich habe ein billiges Cat5-Kabel genommen 
(Reichelt: 30m für 7€ und ein paar Patch-Verbinder für 1,95 muss man 
schon mal ausgeben).

von Jens B. (sunnyman)


Lesenswert?

Hermann schrieb:
> Ich habe mal in die Bedienungsanleitung des Hexin Technology HXSP-485B
> gesehen. Die Kopplung zweier Module über RS485 ist vorgesehen.
> Vielleicht ist es ja ein ganz dummer Fehler:
> - Ist die Baudrate auf beiden Seiten richtig eingestellt?

Jawoll. In mehreren Stunden Rumprobiererei muss allein statisch gesehen 
schon die richtige Einstellung dabei gewesen sein :)

> - Ist die Polarität der RS485 auf beiden Seiten richtig?
+ auf + und - auf -, nicht wahr?
> Bei mehrfach
> unterbrochenem Klingeldraht ist das ja schnell passiert.
Der ist noch nicht im Einsatz, im Moment ist alles noch auf dem 
Labortisch montiert.


> Habe ich da richtig gelesen? Das geht ja wohl gar nicht!! Ein twistet
> pair Kabel ist ja wohl ein Muss!

Sag das nicht der Installation auf RS485-Basis, die ich betreue, dort 
sind bei ca. 120m Gesamtbuslänge ca. 60 Meter Telefon-Erdkabel beteiligt 
:)

von Jens B. (sunnyman)


Lesenswert?

gk schrieb:
> Besonders hilfreich
> wäre natürlich ein Oszilloskop zur Fehlersuche.

Ein Hitachi VC 6145 (100 MHz 4ch, 2K Speicher) wäre verfügbar.

von Duck und wech (Gast)


Lesenswert?

Jens B. schrieb:
> Als
> Verbindungsleitung steht mehr sowas wie ein mehrfach unterbrochener
> "Klingeldraht" zur Verfügung, die Gesamtstrecke dürften auch gut und
> gern 120 m sein.

Sowohl für RS232 als auch für RS485 wäre es schon gut, wenn die Leitung 
nicht unterbrochen ist.
;-)

von gk (Gast)


Lesenswert?

Jens B. schrieb:
> Ein Hitachi VC 6145 (100 MHz 4ch, 2K Speicher) wäre verfügbar.

Dann kann doch jetzt die gezielte Fehlersuche los gehen. Zum Beispiel 
auf der PC-Seite per Software ein Zeichen wiederholt senden. Das muss 
dann am Anfang der Leitung zu sehen sein, wobei auf der Leitung B, das 
invertierte Signal der Leitung A zu sehen sein muss. Die beiden Signale 
können dann bis zum Empfänger verfolgt werden. Auf der RFID-Seite muss 
das Signal dann am PIN 3 der D-SUB-Buchse heraus kommen. Wenn das 
funktioniert sehen wir weiter.
gk

von Frank K. (fchk)


Lesenswert?

Jens B. schrieb:

>> - Ist die Polarität der RS485 auf beiden Seiten richtig?
> + auf + und - auf -, nicht wahr?

Wie sieht es mit Deiner Masse aus?

Obwohl der RS485 Receiver im Prinzip nur die Spannungsdifferenz misst, 
brauchst Du trotzdem eine gemeinsame Masse, weil der 
Aussteuerungsbereich des Differenzverstärkers begrenzt ist. Heißt also: 
Wenn das Ground-Potential der beiden Seiten um mehr als sagen wir mal 7V 
unterschiedlich ist, funktioniert es nicht mehr.

Genau wie bei CAN brauchst Du bei RS485 neben den beiden Signalleitungen 
für einen zuverlässigen Betrieb noch eine Masseleitung. Hast Du die?
Ein unzuverlässiger Betrieb kommt ggf. ohne Masse aus - wenn die 
Potentialdifferenzen gering genug sind, mag das zufällig funktionieren - 
das ist das Gemeine daran.

fchk

von Jens B. (sunnyman)


Lesenswert?

Frank K. schrieb:
> Wie sieht es mit Deiner Masse aus

Öm, hatte ich so bisher nicht, den Masseanschluss hatten wir, um 
zwischen GND und +9V bei dem RS232-RS485-Adapter eine 
Versorgungsspannung einzuspeisen.

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.