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
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.
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.
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
Für RS485 Multimaster heisst das Stichwort Kollisionsvermeidung, nicht Kollisionserkennung. Ist aber eher was für Masochisten.
Ich kann mich A.K. nur anschliessen: RS485 ist nur als Multimaster nutzbar, wenn meistens Ruhe auf dem Äther herrscht..
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
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.