Kollisionserkennung bei RS485

Gast #571181
Lesenswert?

Hallo zusammen,

wie realisiere ich bei RS485 die Kollisionserkennung?

Habe das Datenblatt der MAX-Familie studiert und es scheint so, als wenn
es keinen dominanten/rezessiven Pegel wie beim CAN gibt.

Das Prinzip der Kollisionserkennung (Arbitrierung etc.) ist mir bekannt,
mir geht es nur um die Umsetzung speziell bei RS485.

Habe irgendwo im Netz gelesen, daß der Transmitter immer dann
disabled und damit der Ausgang hochohmig wird, wenn der Sender keinen 
dominaten Pegel auf den Bus gibt (ob die 1 oder 0 dominant ist, sei 
jetzt mal dahingestellt)

Für ein paar sachdienliche Bemerkungen wäre ich sehr dankbar!

MFG
Andy
Gast #571188
Lesenswert?

Ganz einfach. Transmitter und Receiver gleichzeitig einschalten 
(deswegen haben die auch separate Enable-Eingänge), und beim Senden 
prüfen, ob die gerade gesendeten Daten genauso wieder im Empfangspuffer 
des UART ankommen. Früher hätte man das eine Hinterbandkontrolle 
genannt. Klappt nur bei Mikros, bei denen Sende- und Empfangsregister 
separate Adressen haben, vermute ich. Wenn zurückgelesenes Byte ungleich 
gesendetes Byte, dann Kollision.
#571189
Lesenswert?

Leider ist der Transmitter des RS485-Bausteins derartig niederohmig, 
dass etwaige Kurzschlüsse, wie sie bei Kollisionen auftreten, nicht 
detektiert werden können, da der Leitungswiderstand grösser als der 
Widerstand des Transmitters ist.
Die Diskussion hatten wir schon vor ein paar (mehr) Tagen.

Andersherum wird ein Schuh draus: Man kann CAN-Transceiver für eine 
RS485-Kommunikation verwenden, da sie etwas anders arbeiten.
Gast #571209
Lesenswert?

Hallo zusammen,

Danke für die schnellen Antworten!

Bestätigt sich also meine Vermutung, d.h. es gibt bei RS485 keinen 
dominanten Pegel, wenn zwei Transmitter enabled sind und der eine "0" 
und der andere eine "1" sendet?

Was meint Ihr zu dem obigen Punkt Transmitter disablen bzw. gibt es da 
eine Möglichkeit der Kollisionserkennung auf diesem Weg ?


MFG
Andy
Gast #571227
Lesenswert?

Hallo AndyW,

vielleicht noch eine Ergänzung. Beim Senden ist der Buffer/Treiber zu 
aktivieren und es darf immer nur einer senden. Das Aktivieren kann bei 
einem Umsetzer RS232 auf RS485 mitunter auf drei Arten erfolgen.

1. Durch Ausgabe von Zeichen auf die RS232 wird der Buffer aktiviert. 
Das benötigt einen Mikrocontroller vor dem Treiber. Ein "Pegelumsetzer" 
genügt dabei nicht.

2.oder 3.
Durch setzten der RTS (oder DTR) Leitung vor der Datenübertragung wird 
der Umsetzer aktiviert. Leider ist es dann mit dem Hyperterminal nicht 
mehr möglich zu arbeiten.

   Gruß fritz

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren