beta4881
25.05.2007, 11:15
Hi!
Erst einmal großes Lob an dieses Forum, das ich schon oft konsultiert habe!
Ich habe folgendes Problem mit einem RS-485-Bus, den ich im Rahmen eines verteilten Roboters (der auf 3 Atmega32 aufbaut) verwende: Sobald ich mehr als 2 Teilnehmer an den Busanschließe, wird die Datenübertragung teilweise fehlerhaft. Entweder werdn Zeichen übertragen, die nach Übertragungsfehlern aussehen, oder die Teilnehmer antworten gar nicht. Das ganze scheint mir nicht immer gleich aufzutreten, manchmal funktioniert die Kommunikation auch, wenn man die Busstecker neu einsteckt oder die Reihenfolge am Bus ändere.
Aufbau wie folgt (gemäß diesem Prinzip (https://www.roboternetz.de/wissen/index.php/RS485)):
http://img263.imageshack.us/img263/2120/aufbaupk1.jpg (http://imageshack.us)
(Vollständige Schaltpläne hier!) (http://www.c4media.de/misc/temp/Schematic_Prints.pdf)
Der PC stellt mit der Busumsetzerbox den Master dar, die bis zu 3 "Seiltrommelboxen" die Slaves. Der PC ist alternativ über USB oder per RS-232 (seriell) anschließbar.
Für den RS-485-Bus wurde der Baustein max488 für 4-Draht-Technik verwendet (Datenblatt (http://www.maxim-ic.com/parts.cfm?p=MAX488)). Schließt man die Seiltrommelboxen jeweils einzeln an, funktioniert die Kommunikation wunderbar, bei einer zusätzlichen Box nur noch mit Schwierigkeiten, bei einer weiteren gar nicht mehr.
Buskabel: Hier wurde ein herkömmliches Netzwerkkabel (Patch, nicht Crossover) verwendet. Dieses transportiert auf 4 Adern die Datensignale und auf den restlichen 4 Adern die 12V Spannungsversorgung. Jede Mikrocontrollerplatine in den Seiltrommelboxen zieht ca. 100mA. Die Verkabelung erfolgt als Ring, also an jedem Teilnehmer sind 2 Buchsen, wo der Bus durchgeschleift und für die aktuelle Box abgegriffen wird. Die Kabel sind jeweils nur 2-5 m lang.
Abschluss: Verwendet man nur 2 Teilnehmer am Bus, funktioniert die Kommunikation wunderbar auch ohne Abschluss (s. Datenblatt). Bei mehreren Busteilnehmern führt das Hinzufügen des Abschlusses nicht zu einer Verbesserung, stattdessen steigt der Stromverbrauch um 100-200 mA - was ich etwas viel finde.
Kollisionen auf dem Bus werden durch Adressierung und einzelnes Ansprechen der Slaves vermieden!
Irgendwelche Ideen, was der Fehler sein könnte?
Evtl. Ansatzpunkte:
- Signal und Versorgung in einem Kabel. 12V Gleichstrom bei max. 300-500 mA halte ich eigentlich nicht für bedenklich bei Übertragungsraten von 2400 bps bis 9600 bps
- Baustein max488: Lt. Hersteller Maxim gibt es zwei Varianten (http://www.maxim-ic.com/parts.cfm?p=MAX488) für etwas verschiedene Temperaturbereiche, die sich jedoch überlappen: Darf man die evtl. nicht gemischt einsetzen?
Erst einmal großes Lob an dieses Forum, das ich schon oft konsultiert habe!
Ich habe folgendes Problem mit einem RS-485-Bus, den ich im Rahmen eines verteilten Roboters (der auf 3 Atmega32 aufbaut) verwende: Sobald ich mehr als 2 Teilnehmer an den Busanschließe, wird die Datenübertragung teilweise fehlerhaft. Entweder werdn Zeichen übertragen, die nach Übertragungsfehlern aussehen, oder die Teilnehmer antworten gar nicht. Das ganze scheint mir nicht immer gleich aufzutreten, manchmal funktioniert die Kommunikation auch, wenn man die Busstecker neu einsteckt oder die Reihenfolge am Bus ändere.
Aufbau wie folgt (gemäß diesem Prinzip (https://www.roboternetz.de/wissen/index.php/RS485)):
http://img263.imageshack.us/img263/2120/aufbaupk1.jpg (http://imageshack.us)
(Vollständige Schaltpläne hier!) (http://www.c4media.de/misc/temp/Schematic_Prints.pdf)
Der PC stellt mit der Busumsetzerbox den Master dar, die bis zu 3 "Seiltrommelboxen" die Slaves. Der PC ist alternativ über USB oder per RS-232 (seriell) anschließbar.
Für den RS-485-Bus wurde der Baustein max488 für 4-Draht-Technik verwendet (Datenblatt (http://www.maxim-ic.com/parts.cfm?p=MAX488)). Schließt man die Seiltrommelboxen jeweils einzeln an, funktioniert die Kommunikation wunderbar, bei einer zusätzlichen Box nur noch mit Schwierigkeiten, bei einer weiteren gar nicht mehr.
Buskabel: Hier wurde ein herkömmliches Netzwerkkabel (Patch, nicht Crossover) verwendet. Dieses transportiert auf 4 Adern die Datensignale und auf den restlichen 4 Adern die 12V Spannungsversorgung. Jede Mikrocontrollerplatine in den Seiltrommelboxen zieht ca. 100mA. Die Verkabelung erfolgt als Ring, also an jedem Teilnehmer sind 2 Buchsen, wo der Bus durchgeschleift und für die aktuelle Box abgegriffen wird. Die Kabel sind jeweils nur 2-5 m lang.
Abschluss: Verwendet man nur 2 Teilnehmer am Bus, funktioniert die Kommunikation wunderbar auch ohne Abschluss (s. Datenblatt). Bei mehreren Busteilnehmern führt das Hinzufügen des Abschlusses nicht zu einer Verbesserung, stattdessen steigt der Stromverbrauch um 100-200 mA - was ich etwas viel finde.
Kollisionen auf dem Bus werden durch Adressierung und einzelnes Ansprechen der Slaves vermieden!
Irgendwelche Ideen, was der Fehler sein könnte?
Evtl. Ansatzpunkte:
- Signal und Versorgung in einem Kabel. 12V Gleichstrom bei max. 300-500 mA halte ich eigentlich nicht für bedenklich bei Übertragungsraten von 2400 bps bis 9600 bps
- Baustein max488: Lt. Hersteller Maxim gibt es zwei Varianten (http://www.maxim-ic.com/parts.cfm?p=MAX488) für etwas verschiedene Temperaturbereiche, die sich jedoch überlappen: Darf man die evtl. nicht gemischt einsetzen?