Hallo! Man stelle sich vor: Ich habe ein gehäuse, in das Euro-Karten eingesteckt werden, welche dann über eine Busplatine verbunden werden. Welches Bus-System würdet ihr verwenden, um die einzelnen eingesteckten Platinen (alle haben gemeinsame VCC und GND) über 1-2 Leitungen mit einem gemeinsamen Multimaster-Bus zu verbinden? Das Bussystem sollte später auch außerhalb des Gehäuses erweitert werden und dabei ca. 5 bis 10m ausgedehnt werden. Habe dabei zuerst an CAN gedacht,aber geht das überhaupt?
Da schlag ich doch mal wieder meinen Lieblingsbus vor: RS485 -Störunemfpindlich -2 Drahtbus -Einfacher Aufbau mit nur einem IC (SN75176) der ausser einem Entstörkondensator 100nF nix aussen rum braucht Stefan
CAN ist eine sehr gute Wahl. Die Software ist extrem einfacher als bei RS485, da ja ein Großteil schon die Hardware macht. Wir benutzen auch CAN in unseren Geräten. Für die Verbindung der Geräte untereinander und zum PC benutzen wir aber einen 2. CAN-Bus, damit der ganze interne Traffic nicht außen die Performance senkt. Außerdem ist so die Adressierung einfacher, jedes Gerät kann Module mit gleichem Identifier beinhalten und hat nach außen nur einen Identifier. Falls der µC keine 2 CAN-Busse hat, gibts ja den MCP2515 oder SJA1000. Peter
@AiM Ist nur ne Frage des Protokolls.... RS485 hat ja kein festgelegtes Protokoll, wenn man sich was passendes zusammenstrickt sollte Multimaster kein Problem sein. Stefan
Aber es gibt mit CAN keine Probleme, wenn der Bus in der Hinteren Bus-Platine verlegt wird und dort auch die Abschlusswiderstände sind. Die einzelenen CAN-Knoten wären dann ja als abzweig vom Bus ausgeführt?
Bei geringer Geschwindigkeit (9600baud) und wenig Daten sollte das problemlos gehen. Wenn mehr gefordert wird, dann ist CAN die bessere Lösung.
>> Wenn mehr gefordert wird, dann ist CAN die bessere Lösung.
Also vorerst würde das Reichen, da nur einzelne kurze Informationen
(Fehlermeldungen, ....) übertragen werden.
In späteren Erweiterungen sollte sich das aber ändern,....
Also: eher CAN.
Aber gibt es da mit Abzweigungen vom Bus Probleme?
Der CAN-Bus verträgt normalerweise kurze Stichleitungen (ein paar cm). Sie sind zwar nicht konform der Spezifikation bereiten aber im allgemeinen keine Probleme. Ich habe dies selbst schon öfters im Auto getestet. Denke bitte daran, dass der Bus an beiden Enden mit 120Ohm abgeschlossen ist. Es muß mindestens ein Abschlußwiderstand vorhanden sein, damit der Bus funktioniert (eigene leidvolle Erfahrung :-)! Gruß Timo
Also so wie ich das jetzt mal Schematisch aufgezeichnet habe (siehe Anhang) sollte es funktionieren? Die Stichleitungen sind je nach Platine dann zwischen 5 und 20 cm lang. danke schon mal AiM
> RS485 hat ja kein festgelegtes Protokoll, wenn man sich was > passendes zusammenstrickt sollte Multimaster kein Problem sein. Das große Problem bei Multimaster ist doch die Kollisionserkennung und Reaktion darauf oder deren Vermeidung. Wie macht man das bei RS485?
>>Das große Problem bei Multimaster ist doch die Kollisionserkennung
und
Reaktion darauf oder deren Vermeidung. Wie macht man das bei RS485?
Würd' mich auch interessieren.
Ja so sieht die prinzipielle Topologie aus. Im Allgemeinen integriert man die Abschlußwiderstände in den äußersten Steuergeräten, Sensoren,... Ebenso gibt es noch diverse zusätzliche Schutzbeschaltungen (Überspannung, Symmetrierung, Kompensationsdrossel,...) die je nach Einsatzort in jedes Gerät integriert werden kann. Da sind sich aber noch nicht einmal die Automobilhersteller einig, was notwendig ist und was nicht. Stichleitungen von <10cm stellen meiner Erfahrung nach keinerlei Probleme dar (20cm sollten eigentlich auch noch in Ordnung sein). Dies ist aber immer von der Taktrate, Layout und Buskapazität abhängig. Ich kenne die Werte in der Spek von Bosch/Motorola nicht mehr auswendig.
OK Danke! Ich habe jetzt mal CAN eingebaut. Die Abschlusswiderstände sind in der hinteren Bußplatine links und rechts außen eingebaut. Die längste Stichleitung ist ca. 22cm lang. Da nicht allzuvieles über den Buß übertragen wird, sollte das also auch kein Problem sein, hoffe ich. danke euch. gruß AiM
>Das große Problem bei Multimaster ist doch die Kollisionserkennung >und >Reaktion darauf oder deren Vermeidung. Wie macht man das bei RS485? Könnte man vielleicht so wie bei Ethernet (X25) machen: Alle Teilnehmer haben einen Verzögerungszähler. Der Verzögerungszähler wird z.B. per Zufallsgenerator gesetzt. Ähnlich macht man's z.B. auch beim AX25 Protokoll (Packet Radio), wo viele Datentransceiver auf einer gemeinsamen Frequenz kommunizieren. Stefan
Die normalen RS485-Treiber sind nicht kurzschlußfest, d.h. wenn zwei Teilnehmer gleichzeitig unterschiedlichen Pegel treiben knallts - da hilft keine noch so clevere Strategie. Das Problem könnten CAN-Transceiver lösen. Dann könnte man in Software eine geschickte Busarbitrierung machen. Naja, dann ist der Weg zu CAN aber auch nicht mehr weit... und man spart sich ne Menge Arbeit und Probleme. Man könnte sich eine Strategie mit fest zugeteilten Zeitschlitzen pro Master vorstellen. Dabei steigt aber wieder der Aufwand... Aber das wußte Rolf natürlich alles, als er seine (rhetorische) Frage stellte. ;-) ----, (QuadDash).
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.