Geräte-Bus

OP #230707
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?
Gast
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
Gast
@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
OP
>> 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?
Gast
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
Gast
> 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?
Gast
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.
OP
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
Gast
>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
Gast
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).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.