mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Geräte-Bus


Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Stefan Seegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man RS485 als Multi-Master betreiben?
Währe mir perönlich neu.
Wenn ja: wie?

Autor: Thorsten Lauf (tlauf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
*aboniert

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Seegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei geringer Geschwindigkeit (9600baud) und wenig Daten sollte das
problemlos gehen.

Wenn mehr gefordert wird, dann ist CAN die bessere Lösung.

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> 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?

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael A. (aim)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
OK und hier der Anhang, ....

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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?

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>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.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan Seegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.