Forum: Mikrocontroller und Digitale Elektronik CAN Bus mehrere Teilnehmer


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe einen CAN- BUS mit 3 Teilnehmern (A, B, C). Teilnehmer A ist 
ein Raspberry, welcher mit dem pican 2 Shield betrieben wird. B & C sind 
ein Arduino mit jeweils einen TJA1050 MCP2515 Shield.

Teilnehemr A und B sind 30cm entfernt, B ist zu C etwa 8m entfernt.

Hänge ich nur A und B an den CAN- Bus, funktioniert alles problemlos. 
Hänge ich zusätzlich Teilnehmer C dazu, kann Teilnehmer B plötzlich 
nichts mehr senden (keiner Acknowledged das Datenpaket), aber er 
empfängt noch Pakete. A und C können miteinander sprechen.

Entferne ich Teilnehmer C wieder, können A und B wieder kommunizieren.

Alle benutzen das gleiche GND, B und C jedoch eine andere 
Spannungsquelle.
Auf A und C ist der Endwiderstand aktiviert.

Geschwindigkeit ist 125kbit/s auf allen Teilnehmern eingestellt.

Ich hatte das gleiche Setup bereits öfters mit allen 3 Teilnehmern auf 
gleichen Tisch probiert, dort funktionierte alles problemlos (alle 
hatten aber die gleiche Spannungsquelle und waren höchstens 30cm 
auseinander.

Hat jemand eine Idee, woran das liegen könnte?

von Sven L. (sven_rvbg)


Lesenswert?

Was passiert wenn du B und C tauschst?

von Oliver (Gast)


Lesenswert?

tja typisch. Die Bastler können heute nur noch Shields benutzen -sprich 
irgendwas irgendwo reinstecken- und fertige Software einbinden und sind 
nicht in der Lage einem evtl. Fehler auf den Grund zu gehen.

Wie wäre es als erstes, sich mit einem Oszi die Signale und 
Signalqualität anzusehen? Die dann zu sehenden Unterschiede sind 
wesentlich zielführender, als hier im Nebel rumzustochern und anderer 
Leute Zeit zu stehlen.

von Holger T. (holgert)


Lesenswert?

Terminierungswiderstände?

Beitrag #5360848 wurde vom Autor gelöscht.
von STK500-Besitzer (Gast)


Lesenswert?

Holger T. schrieb:
> Terminierungswiderstände?

Würde ich auch vermuten. Wenn entweder zu wenig (offene Enden) oder zu 
viele (Shields sind als Punkt-zu-Punkt-Verbindung ausgelegt).

von Thomas (Gast)


Lesenswert?

Was sind Terminierungswiderstände?

von Kuno (Gast)


Lesenswert?

Thomas schrieb:
> Was sind Terminierungswiderstände?

Die Abschlußwiderstände für den Bus.
120 Ohm am beiden Enden des Busses.

Thomas schrieb:
> Auf A und C ist der Endwiderstand aktiviert.

von Ralf (Gast)


Lesenswert?

Thomas schrieb:
> Was sind Terminierungswiderstände?

Internetsuche kaputt?

von ThomasM (Gast)


Lesenswert?

Da hier nun ein 2ter Thomas als Gast herumgeistert, habe ich meinen 
Namen auf ThomasM geändert :)...

Komme leider erst wieder nächste Woche zum probieren, aber mal 
grundsätzlich:

Als Kabel kann ich ein mormales Datenkabel geschirmt verwenden? Es muss 
kein besonderes Kabel sein?

STK500-Besitzer schrieb:
> Würde ich auch vermuten. Wenn entweder zu wenig (offene Enden) oder zu
> viele (Shields sind als Punkt-zu-Punkt-Verbindung ausgelegt).

Derzeit ist ein Endwiderstand auf Client A und C (siehe Bild erster 
Beitrag). Wäre es auch möglich, dass ich gar keine brauche?

Wenn ich die Datenrate reduziere, werden Fehler auf dem Bus eher 
verziehen oder? Also könnte ich mal mit wesentlich geringerer 
Geschwindigkeit testen?

von Holger T. (holgert)


Lesenswert?

ThomasM schrieb:
> Derzeit ist ein Endwiderstand auf Client A und C (siehe Bild erster
> Beitrag).

Ich habe schon viel zu oft im Leben gehört: Das haben wir geprüft. Das 
ist In Ordnung und kann nicht die Ursache sein.

ThomasM schrieb:
> Wäre es auch möglich, dass ich gar keine brauche?

Echt jetzt? Beschäftige Dich mit der CAN Spezifikation!

ThomasM schrieb:
> Alle benutzen das gleiche GND, B und C jedoch eine andere
> Spannungsquelle.

Ist für mich völlig unlogisch. A und B liegen nebeneinander, C angeblich 
in 8 m Entfernung. Wie ist GND ausgeführt? Vervollständige Deine Skizze 
um GND, Versorgung und Endwiderstände. Aber so, wie ausgeführt und nicht 
wie geplant. Es ist sehr wahrscheinlich, dass der Fehler dort zu finden 
ist.

ThomasM schrieb:
> Als Kabel kann ich ein mormales Datenkabel geschirmt verwenden? Es muss
> kein besonderes Kabel sein?

Bei den Datenraten, Längen können es (zum Test) zwei einzelne 
(verdrillte) Drähte sein.

Sven L. schrieb:
>Was passiert wenn du B und C tauschst?

Beantworte diese Frage, sonst

Oliver schrieb:
>... als hier im Nebel rumzustochern und anderer
> Leute Zeit zu stehlen.

von StefG (Gast)


Lesenswert?

Alles ausschalten und messen ob zwischen CAN-HI und CAN-LO 60 Ohm sind.

von ThomasM (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die absolute Wahrheit.

Die Endwiderstände sind jeweils am Shield mit einem Jumper aktiviert.

von ThomasM (Gast)


Lesenswert?

ThomasM schrieb:
> Anbei die absolute Wahrheit.

Ich sehe gerade, die L & H leitung vom CAN Bus ist beim Teilnehmer C 
verdreht ist in der Realität nicht so ;-)

von Sven K. (svenk)


Lesenswert?

ThomasM schrieb:
> Anbei die absolute Wahrheit.
>
> Die Endwiderstände sind jeweils am Shield mit einem Jumper aktiviert.

Hast Du jetzt mal gemessen und sind da tatsächlich 60 Ohm zu messen ?
(wie oben vorgeschlagen ?)


Gruß Sven

: Bearbeitet durch User
von ThomasM (Gast)


Lesenswert?

Sven K. schrieb:
> Hast Du jetzt mal gemessen und sind da tatsächlich 60 Ohm zu messen ?
> (wie oben vorgeschlagen ?)

Kann ich leider erst wieder Sonntag bzw. Montag :( ...

von Thomas F. (igel)


Lesenswert?

ThomasM schrieb:
> Anbei die absolute Wahrheit.

Die Masseverbindung zwischen A+B und C ist bei CAN nicht zwingend 
notwendig.

Versuchs mal ohne.

Meine China-MCP2515-Module haben eine 8MHz Quarz statt die üblichen 
16MHz. Das muss man bei der Initialisierung des MCP2515 berücksichtigen.

von dummschwaetzer (Gast)


Lesenswert?

Dreh mal ein Netzteilstecker 180° in der Steckdose

von ThomasM (Gast)


Lesenswert?

Thomas F. schrieb:
> Die Masseverbindung zwischen A+B und C ist bei CAN nicht zwingend
> notwendig.

Die habe ich auch erst gezogen, weil B nicht funktionierte.

dummschwaetzer schrieb:
> Dreh mal ein Netzteilstecker 180° in der Steckdose
+/- sind korrekt angeschlossen und gemessen.

Thomas F. schrieb:
> Meine China-MCP2515-Module haben eine 8MHz Quarz statt die üblichen
> 16MHz. Das muss man bei der Initialisierung des MCP2515 berücksichtigen.

Der Raspberry (A) hat ein 16Mhz Quarz verbaut, die Microcontroller (B,C) 
haben 8Mhz Quarz verbaut. Bei der Initialisierung ist der korrekte Wert 
angebenen.
2 unterschiedliche Quarz machen eh kein Problem?

von ThomasM (Gast)


Lesenswert?

Hallo,

habe nun einen 4ten CAN- Bus mit Arduino zum Testen gebaut und anstatt 
von Teilnehmer B ins Netz gehängt.
Siehe da, es funktioniert alles.

Habe nun vom Teilnehmer B den CAN- Bus Shield ausgetauscht und alles 
funktioniert nun :) ...

Danke für eure Hilfe!

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.