Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Ring-Topologie


von Fred (Gast)


Lesenswert?

Hallo,

Ich habe eine Frage in Bezug auf die Ring-Topologie.

Zur Zeit habe ich das CAN-Netzwerk über eine Linien Struktur realisiert.

Ich wollte nun es durch einen doppelten Ring aus design-technischen 
Gründen realisieren.

Hat vielleicht jemand Erfahrung damit gemacht? Was ist denn dort 
besonders zu beachtenß Wie sieht es mit der Terminierung aus?

Beste Grüße

 Fred

von Fred (Gast)


Lesenswert?

Hat niemand eine Erfahrung damit? oder ist die Frage zu elementar?

In einem Ring wird das Signal der Nachricht immer weiter getragen. Somit 
läuft das Signal ständig im Ring und behindert andere Übertragungen, Wie 
also wird ein solches problem behandelt?

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ich denke mal, CAN ist dafür gar nicht ausgelegt.
Du solltest mal bei den Token-Ring-Leuten (Staffelläufer) vorbeisehen, 
ob die noch ein paar Transceiver haben, die man verwenden kann.

CAN baut zum Teil ja gerade auf Kollision, um Prioritäten zu 
ermöglichen. CAN ist nicht Punkt-zu-Punkt, es können Knoten ausfallen, 
ohne den Bus zu stören, es gibt auch Nachrichten, die niemanden 
erreichen, weil sie niemand interessiert.

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Welche Vorteile sollte ein Ring gegenüber einem Bus haben?

Der CAN funktioniert nur als Bus, nicht als Ring.
Aber wenn du den Ring einfach durchschneidest und Terminierst, hast du 
doch einen Bus, der aussieht wie ein Ring.

Wenn du einen Stern bauen wollen würdest, würde ich das ja noch 
verstehen...

von Alexandre1978 (Gast)


Lesenswert?

Guten Tag,

Ich hänge mich gerade mal hier an, weil es so schön dazu passt:
Ich habe ein CAN System, 200kBits/s, und eine Baum / Stern Topologie:
Twisted pair, die weitesten teilnemer ca. 60m entfernt, etwa 4 Sterne @ 
je 5-8 Zweige von 2-20m. Diese einzelne Sterne sind auf einer Hauptader 
von ca. 20m verteilt.
Wie würdet Ihr da Abschlusswiderstände plazieren?
Jedes Ende?
Mitte jedes Sternes?
Nur an den entferntesten Enden jedes Sternes?

Vielen Dank für eure Unterstützung,
   mfg,
      Alexandre1978

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

CAN BUS hat nicht ohne Grund BUS im Name.

Baum ist absolut verboten.
Stern ist absolut verboten.

kurz gesagt: Alles ausser Bus ist verboten.

Die einzige Möglichkeit das zu umgehen ist eine Art Hub oder Switch zu 
bauen, welches den CAN Bus in mehrere kleinere Busse aufteilt.
Aber sowas zu bauen ist auch nicht einfach.
Meine Empfehlung: Bau das Netzwerk einfach als Bus auf.

von ARM-Fan (Gast)


Lesenswert?

>Baum ist absolut verboten.
>Stern ist absolut verboten.
>kurz gesagt: Alles ausser Bus ist verboten.

Aber was verboten ist, macht ja gerade Spaß... ;-)

Wir bauen hier seit über 10 Jahren Geräte mit >10 CAN-Knoten
und den wildesten Verkabelungen. Auch zusätzlich extern anschließ-
bare Geräte am selben einen "BUS" sind möglich und vorgesehen.
Das ganze zwar "nur" auf 100kbit, weil bisher nie mehr gebraucht.
Funktioniert jedoch absolut einwandfrei.

Also sooo schwarz und weiß darf man das ganze nicht sehen.

von Randy N. (huskynet)


Lesenswert?

Es schweift jetzt vielleicht schon etwas sehr vom Thema ab, aber was ich 
mich immer frage (also es gibt garantiert nen Grund - nur ich kenn ihn 
einfach nicht): Wieso soll z.B. ein Stern oder Ring bei CAN nicht 
funktionieren? Also es sind doch die gleichen Adern. Ob ich nun A mit B 
und B mit C verbinde, oder A mit B und A mit C, also das müsste doch 
egal sein!?

Das Einzige, wie ich mir das erklären könnte wäre, dass es wegen der 
Verzögerung der Elektronen nicht geht, aber ich kann mir irgendwie nicht 
vorstellen, dass die so groß ist, dass die wirklich stören kann. Also 
Abschlusswiderstände dienen ja auch dazu, um Relexionen am Adernende zu 
unterdrücken. Beim Ring würde danach dann der Teilnehmer, der direkt 
neben dem Sender sitzt, das ganze zweimal bekommen - einmal von der 
einen Seite, direkt vom Sender, und einmal verzögert über den Ring. Aber 
hängt das wirklich damit zusammen?

von F. K. (freddy436)


Lesenswert?

Ich wüste nicht das es einen Ring Transceiver für CAN gibt.
Die einzigste Möglichkeit die ich da sehe ist jeden Knoten mit zwei 
Transceivern auszustatten und dann das ganze ins Protokoll aufzunehmen, 
das die Software es dann weiterschickt. Sobald ein Knoten ausfällt ist 
natürlich Ende für alle dahinter
=> schlechte Idee

Hier eine CAN HUB (Stern/Baum Topologie) Schaltung:
http://oschmid.home.solnet.ch/mt/can-hub/can-hub.php

Ich habe es bisher noch nicht gebraucht, sollte aber funktionieren.
Das diskrete Zeugs sollte sich auch gut per FPGA erledigen lassen, bei 
niedrigen Geschwindigkeiten sogar nur mit einem kleinem µC.

von winne (Gast)


Lesenswert?

ganz einfach:

Stern und Ring bauen auf P2P (Peer to 
Peer)http://de.wikipedia.org/wiki/Peer-to-Peer
auf.
Dies bedingt elektrisch separate verbindungen.

in den Busssystemen I²C, 1wire, und CAN liegen die Bedingungen ganz 
anders

verschiedenene Sender und Epfänger arbeiten auf eine leitung mit hoher 
Geschwindigkeit die signalausbreitung erfolgt mit Wellencharachter. Dies 
führt an jeder nicht (nichtangepassten)(stör)Stelle zu einer 
Teilreflektion. Offene Enden und Kurzschlüsse stellen insofern das 
gleiche verhalten dar eine Totalreflektion am Strombauch(Kurzschluss), 
offenes Ende Spannungsbauch. Die Folge sind Interferenzen auf der 
Leitung, welche die Pegel bis zur Unkenntlichkeit vermatschen können.

mehere abschlusswiederstände verderben die anpssung ........

Deshalb wenn, von der Line abweisende Topologieen unumgänglich sind, 
Bridges verwenden.

Diese Sache gewinnt mit zunehmender Bussgeschwindigkeit an Bedeutung, da 
dann die Welleneigenschafften der Sprungantwort auf der Leitung 
gegenüber der Quasigleichzeitigkeit zunehmen.

von Alexandre1978 (Gast)


Lesenswert?

Guten Tag,

Hallo zusammen,

Ich weiss schon das CAN für BUS gedacht ist, und auch nur so die Enden 
Optimal abgeschlossen werden können.
Ich empfehle auch unseren Kunden (wir haben ein Hausautomation Produkt) 
die Geräte Linienförmig anzuschliessen.
So Viel zur Theorie.
In der Praxis ist es aber so, dass es dann nicht mehr Linienförmig ist, 
aber Sterne auftreten ("es sind ja nur "KURZE" Leitungen"), und so die 
verschiedenen Sterne wieder zusammen Zentral miteinander verbunden 
werden.
Für Hubs und so weiter ist leider meistens kein Platz, und auch keine 
Speisung vorhanden (unsere Geräte haben alle eine eigene Speisung).
Nach vielen rumfummeln bekommt mann es auch zum laufen, aber ich hätte 
gerne ein paar Faustregeln wie mann es am besten angeht, um nicht ewig 
lange ze testen.
Hier ein paar Eckdaten:
- 200kBits
- TJA1050 Treiber
Twisted Pair, ungeschirmt (und nur 1 twisted pair, also nicht möglich 
Hin- + Zurück)
- Meistens nur wenig Daten (1 Telegramm alle 40ms, mit 0 DatenBytes), 
darauf evtl. ein paar Geräte (0, 1, 2) die mit 2 Daten-Bytes antworten, 
Worst case 100 Geräte die auf das Telegramm Antworten.
- Max. 100 Geräte (im jetzigen Fall ca. 60)
- Im jetzigen Fall sind die entferntesten Geräte keine 60m weit.

Vielleicht hat ja "ARM-Fan" einpaar tips aus Erfahrung?

Da das Produkt noch nicht richtig vermarkt ist, spiele ich mit dem 
Gedanken die Geschwindigkeit evtl. auf 125k runterzuschrauben. Aber ich 
denke der jetzige Fall gehört zu den "kompliziertesten", und wenn ich 
ihn mit 200k zum laufen bekomme, weiss ich umsobesser dass es in zukunft 
mit 125k eigentlich einfach sein sollte.

Also, wer hat tipps, welche mich da weiterbingen würden?
Vielen Dank im Voraus,
   Alexandre1978

P.S.: Ich werde versuchen demnächst eine Zeichnung der Struktur 
einzuscannen, vielleicht kann es weiterhelfen.

von Horst Gschwandtner (Gast)


Lesenswert?

alle 40ms ein Telegramm... wo ist der Sinn von 250 KBit, wenn Du 20Kbit 
nimmst funktioniert es auch und Du hast keine Probleme

von Alexandre1978 (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Meistens wird nur alle 40ms 1 Telegramm gesendet, wodurch alle anderen 
Geräte abgefragt werden.
Es kann sein, wenn irgendwo etwas gedrückt wird, dass 1-2 Geräte mit 
einem Tel. antworten, im worst case könnten aber theoretisch alle (max. 
100) Geräte antworten. Dies wäre auch der Fall bei einer Visualisierung 
wo über ein spezielles Tel. ALLE abgefragt werden.
Und das ganze sollte fertig sein, bevor das nächste Abfrage Tel. kommt, 
das heisst innerhalb 40ms. Daher der Grund.

Als Anhang noch die aktuelle Struktur. An jedem Knoten oder Ende können 
auch mehrere Teilnehmer sein.

Vielen Dank,
   mfg,
      Alexandre1978

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Wenn ich das richtig sehe hast du da Stichleitungen von über 15m.

Ich hoffe da steckt nix sicherheitsrelevantes dahinter.

Mit CAN Bus hat die Verdrahtung auf jedenfall nichts zu tun.

Möglich, dass es funktoniert, aber verlassen würde ich mich darauf 
nicht.

von Alexandre1978 (Gast)


Lesenswert?

Hi,

Es ist nichts Sicherheitrelevantes dahinter.
Wenn 1x pro Monat ich auf eine Taste drücke und das Licht geht nicht 
sofort an, merke ich es nicht da das Telegramm 40ms Später (da ich die 
Taste immer noch drücke) wieder verschickt wird.
Sollte das Telegramm falsch ankommen, passiert auch nichts weil ich 
erwarte das die taste mindestens eine bestimmte Zeit gedrückt bleibt.
Ich bin aber auf der Suche nach dem richtigen Kompromiss 
Geschwindigkeit/Verdrahtung/Effizienz.
Wie würde ich in solch einem Fall die Abschlusswiderstände am besten 
Dimensioniern und platzieren, und bei welcher Geschwindigkeit sollte es 
zuverlässig funktionnieren.
Ich überlege auch evtl. ein Hub in die mitte zu tun, dann wäre alles 
viel besser, aber ich möchte lieber ohne auskommen.

Irgendwelche Tipps?
   Vielen Dank
      Alexandre1978

von MrYahoo (Gast)


Lesenswert?

@Willivonbienemaya

Wie kommst du denn darauf, dass der Name BUS = Linienstruktur bedeutet?
Natürlich ist Stern erlaubt und wird auch genutzt.

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

MrYahoo wrote:
> @Willivonbienemaya
>
> Wie kommst du denn darauf, dass der Name BUS = Linienstruktur bedeutet?
> Natürlich ist Stern erlaubt und wird auch genutzt.

Du kennst dich aus, das merkt man gleich.
Da macht argumentieren keinen Sinn.

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Alexandre1978 wrote:
> Es ist nichts Sicherheitrelevantes dahinter.

Dann kannst du es so versuchen. Gehen wird es wohl. Nur die 
Zuverlässigkeit wird wahrscheinlich leiden.


> Ich bin aber auf der Suche nach dem richtigen Kompromiss
> Geschwindigkeit/Verdrahtung/Effizienz.
> Wie würde ich in solch einem Fall die Abschlusswiderstände am besten
> Dimensioniern und platzieren, und bei welcher Geschwindigkeit sollte es
> zuverlässig funktionnieren.

Die Frage mit der Geschwindigkeit kann man nur raten, nicht mit 
Sicherheit beantworten. Aber: Je langsamer, desto besser.

Mit den Abschlusswiderständen würde ich an deiner Stelle Experimente 
durchführen.
Wenn möglich schau dir die Signalform an und mach längere Tests bei 
denen du die Errorframes mitloggst.

Ich könnte mir vorstellen, dass es am besten geht, wenn du entweder die 
beiden entferntesten Punkte terminierst (je 120 ohm) oder jedes Ende mit 
einem wesentlich höheren Widerstand terminierst. Du solltest aber in 
Summe immer auf etwa 60 ohm kommen, wenn du in den Bus reinmisst.

von MrYahoo (Gast)


Lesenswert?

Zitat von Willivonbienemaya: CAN BUS hat nicht ohne Grund BUS im Name.

Baum ist absolut verboten.
Stern ist absolut verboten.

kurz gesagt: Alles ausser Bus ist verboten.

Aha, also alles was Bus im Namen hat ist ne Linienstruktur. Ich lache 
mich schlapp!! Mach weiter so

von Peter P. (bonsaibaum)


Lesenswert?


von CaH (Gast)


Lesenswert?

Das Wort "Bus" sagt doch absolut nichts über die Ausführung der 
Datenverbindung aus.

Zitat Wiki:
Der Bus ist ein im Bereich der Datenverarbeitung häufig verwendeter 
Begriff für ein Leitungssystem zum Austausch von Daten und/oder Energie 
zwischen potenziell mehr als zwei Teilnehmern. Ein Bus ist ein 
Leitungssystem mit zugehörigen Steuerungskomponenten, das zum Austausch 
von Daten und/oder Energie zwischen Hardware-Komponenten dient. 
Bussysteme finden Anwendung insbesondere innerhalb von Computern und zur 
Verbindung von Computern mit Peripheriegeräten, aber auch in der 
Ansteuerung von Maschinen (Feldbusse, Bushierarchie) sowie immer 
häufiger in Automobilen zur Verbindung der einzelnen elektronischen 
Systemkomponenten eines Fahrzeugs.

von MrYahoo (Gast)


Lesenswert?

Meine Rede, aber Kollege Willivonbienemaya sieht das wohl anders. Na ja 
soll er seine "Busse" mal weiter aufbauen.

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Ist mir schon aufgefallen, ich habs aber ignoriert, da es mit der 
Fragestellung nichts zu tun hat.
Aber müllt ruhig alles voll, wenns Spass macht.

von MrYahoo (Gast)


Lesenswert?

Un diese Frage zu klären scheinst du ja der Richtige zu sein!

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?


von MrYahoo (Gast)


Lesenswert?

Junge du merkst doch nix mehr.

Wenn ich einen CAN-BUS nutze, sagt das noch gar nix über die Topologie 
aus. In Sternform nutze ich immer noch den CAN-Bus, da als 
Übertragungsmedium ein BUS-Kabel genutzt wird, wie dieses verlegt und 
wie oft es gespleisst wird ist scheissegal. Vergiss es einfach, das sind 
Perlen vor die Säue mit dir.

von Uwe Ackerschott (Gast)


Lesenswert?

Hallo,

der Thread ist zwar schon recht alt, ich möchte aber gern eine Lösung 
für eine redundante CAN-Ring Struktur aufzeigen:

Das geht bei www.eks-engel.de mit optischen Konvertern, die CAN auf 
Glasfaser und zurück wandeln.
Die optische Strecke ist dann ein redundanter Ring, der auch dann noch 
funktioniert, wenn er an einer Stelle unterbrochen wird.

von Markus D. (mowlwurf)


Lesenswert?

Ich habe den Thread durch Zufall gefunden und kann die "Diskussion" 
zwischen  Willivonbienemaya und MrYahoo, wenn auch schon einige Jahre 
alt, nicht unkommentiert so offen stehen lassen.

Am Ende liest ein unbedarfter Nutzer das hier und ist danach völlig 
verwirrt, bzw. missinformiert.

Wenn man im CAN Standard ISO 11898-5 liest, ist dort in der Abbildung 1 
auf Seite 2 eindeutig eine Linientopologie mit 2 Abschlusswiderständen 
und der Bildunterschrift "Suggested electrical interconnection" 
abgebildet.

Ähnlich in CiA 102 unter dem Kapitel 6.3: "The wiring topology should be 
as close as possible to a single line structure"

Die Begründung für diese Empfehlung wird auch gleich mitgeliefert: "in 
order to minimize reflections".

Beziehungsweise der Wiki-Artikel zum CAN: 
https://de.wikipedia.org/wiki/Controller_Area_Network#Topologie

Durch den CAN-Standard ist damit eine Linien-/Bustopologie zwar nicht 
vorgeschrieben, sie wird aber aufgrund der Hochfrequenzeffekte wärmstens 
empfohlen. Stiche sind erlaubt, aber nur bis zu einer von der Bitrate 
abhängigen Gesamtlänge.

An sich ist damit auch eine Stern-Struktur möglich, die Berechnung der 
dazu passenden Abschlusswiderstände ist aber aufwendig.

Wenn man das ignoriert, kommt es halt zu Reflexionen im Signal. Diese 
müssen aufgrund einer niedrigen Baudrate und der Fehlertoleranz von CAN 
nicht zu sichtbaren Problemen führen, verschlechtern aber die Qualität 
und damit die Störsicherheit der Übertragung.

Aber die praktische Einsatzmöglichkeit einer Ringtopologie im CAN (ohne 
Wandler auf optisch etc.) würde ich auch ausschließen.

von hc (Gast)


Lesenswert?

Bei kurzen Leitungslängen funktionieren schon prinzipiell alle 
Topologien...

VW (VAG) verbaut auch in den Autos wilde Topologien.
Der Abschlusswiderstande sind dann über "viele" Steuergeräte verteilt.

Ist aber streng genommen dann kein CAN nach Spezifikation mehr.

von Markus D. (mowlwurf)


Lesenswert?

Wie gesagt: Bei kurzen Leitungslängen, niedrigen Baudraten und durch die 
Fehlertoleranz des CAN können auch wilde Verkabelungen zu einem an sich 
funktionierenden Netzwerk führen.

Die Signalform wird aber kaum einem Rechteck ähneln und die Error 
Counter der Knoten sollte man sich besser nicht angucken...

Die Betriebs-/Störsicherheit des Netzwerks wird damit recht niedrig 
sein. Wenn Bus kurz vor der Kotzgrenze betrieben wird und dann 
unvorhergesehene EMV auftritt oder der Bus einfach vor sich hin altert, 
dann muss man sich nicht wundern, wenn plötzlich gar nichts mehr geht.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.