Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Problem


von Andy Häusler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Bin wieder mal auf Eure geschätzte Hilfe angewiesen.

Wir betreiben ein CAN- Bus System mit 3 in der Maschinie verbauten 
Knoten und 2 externen CAN- Knoten.

Die beiden externen Knoten können im Moment nicht gemeinsam betrieben 
werden, da immer der am weitest entfernte auf Störung geht.

Dabei habe ich das komische Verhalten, dass mit dem einen 
Verbindungskabel die Kommunikation problemlos läuft, mit dem anderen 
aber nicht.

Auf dem DSO ist kein Unterschied der Pegel oder Flanken zu sehen.

Beim aktivieren des Abschlusswiderstandes am entfernten Knoten sehe ich 
eine Belastung des Busses, was ja auch in Ordnung ist.

Verwendet werden die CAN-Bus Transciver MCP2551 von Microchip. (Siehe 
Schema im Anhang)

Ein Aufhängen des Knotens erkenne ich an LED6, welche dauernd leuchtet 
und LED5 welche dunkel bleibt.

Im normalen Betrieb flackern beide LED's.

Es scheint also, dass der Transciver die Daten nicht mehr zum Controller 
weiter leitet oder der Controller die TXD Leitung dauernd blockiert.

L1 habe ich übrigens versuchtseise mit R22 und R28 überbrückt.
Die beiden Kondensatoren C22 und C23 wurden ebenfalls entfernt.

Bin für jeden Tipp sehr dankbar!

Gruss Andy

von blubb (Gast)


Lesenswert?

Vielleicht mal den CAN-Treiber-IC per DC/DC wandler vom Rest der 
Schaltung abtrennen?

Läuft denn der Controller auf dem Node mit Störung weiter?

von Christian (Gast)


Lesenswert?

Baudrate?
Topologie - Stern, Baum, Linie?
Terminierung?
Leitung - verdrillt, geschirmt?

von Thomas (kosmos)


Lesenswert?

Werden evtl. identische IDs von den Knoten versendet oder ist die 
Buslast so hoch das ein Knoten nicht durch die Abitrierung kommt?

Die Terminierung ist dazu da um Reflektionen am Leitungsebene zu 
vermeiden. Ware interessant obs wirklich ein Bus oder eher ein Stern 
ist.

von Andy Häusler (Gast)


Lesenswert?

Danke für Eure rasche Antwort:

Vielleicht mal den CAN-Treiber-IC per DC/DC wandler vom Rest der
Schaltung abtrennen?
"Hmm, wird nicht so einfach sein..."

Läuft denn der Controller auf dem Node mit Störung weiter?
"Ja, es hat noch weitere LED's in der Schaltung, welche munter weiter 
blinken."


Baudrate?
"500kB"

Topologie - Stern, Baum, Linie?
"Nicht ganz konsequente Linie mit einem Abzweiger"

Terminierung?
"Habe mit und ohne probiert"

Leitung - verdrillt, geschirmt?
"Es werden handelsübliche PS2 Kabel verwendet (8pol. Mini Din Stecker)"


Werden evtl. identische IDs von den Knoten versendet oder ist die
Buslast so hoch das ein Knoten nicht durch die Abitrierung kommt?
"Es sind 2 identische Knoten, welche Probleme machen. Im Bootloader wird 
ein DIP-SW ausgelesen, welcher dann die Adresse des Knoten definiert, um 
sie voneinander unterscheiden zu können."

Die Terminierung ist dazu da um Reflektionen am Leitungsebene zu
vermeiden. Ware interessant obs wirklich ein Bus oder eher ein Stern
ist.
"Ist wie oben geschrieben ein nicht ganz konsequenter Bus."

von Thomas (kosmos)


Lesenswert?

> "Es sind 2 identische Knoten, welche Probleme machen. Im Bootloader wird
> ein DIP-SW ausgelesen, welcher dann die Adresse des Knoten definiert, um
> sie voneinander unterscheiden zu können."

Und wo wird dann die Adresse übermittelt, gibt es eindeutige Identifier 
die nur jeweils ein Knoten benutzt? Auf jedenfall die Knotenadresse in 
das Lowbyte des Identifier einwandern zu lassen damit es hier keine 
Kollisionen gibt. Im High Bereich dann die Priorität der Nachricht 
vergeben, anderstrum wäre der eine Knoten mit seiner Prio immer unter 
dem anderen. 11 bzw. 29 bits sollten ausreichen um verschiedene 
Identifier pro Knoten vorzuhalten.

Zählt ihr die entsprechenden auch Fehlerregister mit hoch und könnt 
diese auswerten?

Probier mal eine Terminierung mit 2,4 kOhm an den Knoten die nicht am 
Busende sitzen. Oder verringere die CAN Geschwindigkeit dann wird die 
Reflektion nicht mehr abgetastet, da sie dann schon abgeklungen ist.

von Andy Häusler (Gast)


Lesenswert?

Hallo Thomas.
Super Tipps, danke!

Da ich die bei den Knoten nur für die HW zuständig bin, muss ich Deine 
Vermutungen mit der SW Abteilung anschauen.

Komisch ist halt nur, dass es beim einen Kabel scheinbar immer klappt, 
während alle anderen Kabel die wir probiert haben, nie geht.

Dies würde doch eigentlich gegen ein SW- Problem sprechen.

Rein aus dem DSO Bild lässt sich leider kein Unterschied der beiden 
Kabel ausmachen.

Wenn ich das "defekte" Kabel dann an zwischen Maschine und 1. externen 
Knoten anschliesse, funktioniert das Kabel auch mit dem 1. Knoten.
Nur wenn dieses Kabel zwischen 1. externen Knoten und 2. externen Knoten 
anschliesse funktioniert der 2. Knoten nicht mehr.

von Wolfgang (Gast)


Lesenswert?

Andy Häusler schrieb:
> Leitung - verdrillt, geschirmt?
> "Es werden handelsübliche PS2 Kabel verwendet (8pol. Mini Din Stecker)"

Und - sind die geschirmt? Gehandelt wird vieles.

Falls "ja" - wie ist der Schirm bei den Kabeln und bei den Knoten 
aufgelegt?

von rcc (Gast)


Lesenswert?

Die Frage ist eher ob man sich irgenwo ein Problem mit der Masse 
einfängt. Wie lange ist der Bus eigentlich insgesamt? Wirklich 60 Ohm 
rum wenn man in den Bus reinmisst, nicht dass ein Abschlusswiderstand zu 
viel oder zu wenig im Bus ist.

von Thomas (kosmos)


Lesenswert?

durch die Differentielle Übertragung beim CAN Bus wird doch ein 
Störimpuls kompensiert, deswegen sind Störeinflüsse sehr selten.

ist jetzt zwar ein analoges Signal aber trotzdem differentiell.
https://kompendium.infotip.de/files/wdb/GRAFIK/2600_INFORMATIONTECHNIK/2600_GRUNDLAGEN_IT/ABB_2605_01_01_Symm.gif

Ich wurde von einem Softwareproblem ausgehen. Ihr könnt ja die Knoten 
mal zusammenlegen und mit kurzen Leitungen testen. Gab hier letztens 
schon mal einen Thread wo es beim Anklemmen des 3ten Knotens Probleme 
gab.

von Gerd E. (robberknight)


Lesenswert?

Schau Dir mal die 5V-Versorgung von µC und CAN-TRX an. Die scheint mit 
über die CAN-Leitungen zu kommen.

D1 kostet je nach Temperatur ca. 0,4V und der 1117 dahinter braucht 
worst-case 1,1V Dropout. Da bleiben bis zu den 3,3V Ziel nur noch 0,2V 
für Toleranz und zum Ausregeln von Lastsprüngen übrig.

Wenn jetzt die Leitung etwas länger ist und da mehrere Knoten 
dranhängen, bleibt da evtl. von den 5V nicht mehr genug übrig. Wenn es 
kälter wird, steigt die Vorwärtsspannung der Diode und Bauteiltoleranzen 
gibt es auch noch.

Mir wäre das zu sehr auf Kante genäht.

Ich würde entweder mehr als 5V (z.B. 7,5V) auf die Leitung einspeisen 
oder nen kleinen Schaltregler auf jedes Board packen, der sich die 
nötigen Spannungen aus den 24V generiert die auch schon mit auf den 
CAN-Leitungen zu liegen scheinen. Letzteres spart auch noch Kabel und 
dessen Verlegung, was in vielen Fällen deutlich mehr kostet als ein 
kleiner Schaltregler.

: Bearbeitet durch User
von Tobi (Gast)


Lesenswert?

Die 5V sind auch nur mit ein paar 100nf kondis gepuffert.
Wenn die 5V wirklich über eine längere Leitung kommen wird sie auch 
nicht stabil sein.
Da ist ein Kondensator im dreistelligen uf notwendig.
Natürlich wären eine Versorgung der 5v über ein kleinen step down 
wesentlich besser.

von Thomas (kosmos)


Lesenswert?

Zeig doch mal die Oszibilder der CAN Übertragung und der 
Versorgungsspannung an den einzelnen Knoten. Messpunkte sind ja sehr 
viele Vorhanden, ein Bild der Knoten würde mich persönlich auch 
interessieren.

Mein Hausbus läuft auch mit 5V ohne Spannungsregler an jedem Knoten, 
allerdings hat jede Platine einen 100µF Elko und die Leitungslängen sind 
unter 10 Meter.

Das ganze LED Zeugs wird ja auch durch die 5V Leitung versorgt, bricht 
es hier vielleicht ein. Ich habe bei mir keine LED an den TX oder RX 
Leitungen nur eine Status-LED wo ich mir beim Reset des µC durch 
Blinkcodes die Resetquelle anzeigen lassen kann oder falls ein Fehler 
bei den CAN Übertragung stattfinden wiederum per Blinkcodes die 
Fehlerquelle nennt.

von Gerd E. (robberknight)


Lesenswert?

Gerd E. schrieb:
> Ich würde entweder mehr als 5V (z.B. 7,5V) auf die Leitung einspeisen

sorry, die Idee war Unsinn, denn die "5V" hinter der Diode werden ja 
auch noch an anderer Stelle verwendet und damit nicht nur der 1117 
gespeist.

Daher nimm nen Schaltregler der echte 5V aus den 24V erzeugt.

von Bernhard S. (b_spitzer)


Lesenswert?

Kann der STM32 im CAN-Teil eingestellt werden, zu welchem Zeitpunkt die 
Bits abgefragt werden? Bei 500kBit/s und Abtastung in der Mitte der 
Bitzeit hat man bei 2/3c eine maximale Länge von 50m, bei hin- und 
rücklaufendem Teil nur noch 25m nutzbare Leitungslänge.
Setze zum Test die Baudrate mal auf 125kBit herunter. Der 
Slope-Widerstand von 150Ohm ist etwas ungewöhnlich. Für High-Speed nimmt 
man gerne unter 100Ohm (oder hart auf GND), für Low-Speed über 10kOhm.


[quote]Auf dem DSO ist kein Unterschied der Pegel oder Flanken zu 
sehen.[/quote]Wo gemessen? Vor dem Transceiver an TP5,6 oder danach...

Es gab hier mal einen Beitrag, wonach der MCP2551 bei 4,8V nicht mehr 
wollte. bei 5V lief er... also mal die Spannungsversorgung verbessern. 
Evtl. hat dein "Problemkabel" ja nur einen höheren Serienwiderstand als 
das 2. Kabel.

von Andy Häusler (Gast)


Lesenswert?

Hallo Leute

Ist ja super, wie Ihr Euch da ins Zeug gelegt habt.
Herzlichen dank.

War letzte Woche noch ein paar Tage abwesend, werde heute aber dazu 
kommen, die einzelnen Punkte zu testen.

Die Gesamtkänge des internen Buses ist nur ca. 1,5m lang.
Die beiden externen Knoten sollen durch 2 je 2m lange Kabel miteinander 
verbunden werden.

Werde als nächstes mal die Speisugen an den externen Knoten 
kontrollieren und bei Gelegenheit mal ein paar DSO Bilder posten.

von Andy Häusler (Gast)


Lesenswert?

Hallo Leute

Danke Eurer Hilfe das Problem gefunden!

Wir verwenden als externes Buskabel ein 8pol. PS/2 Kabel, welches einen 
gewaltigen Spannungsabfall verursacht.

Trotz der geringen Belastung von rund 60mA-80mA pro Knoten messe ich 
beim Problemkabel am zweiten Knoten nur noch 3,8V auf der 5V Speisung.

Beim kürzeren Kabel messe ich 4,0V, dies reicht scheinbar noch ganz 
knapp, damit der Transceiver funktioniert.

Werde jetzt entweder einen 3,3V Transceiver (wäre ohne redesign zu 
machen) oder einen zweiten Spannungsregler an den 24V vorsehen.

Danke also noch mal allen für die wertvollen Tipps!

Ein schöner Tag wünscht Euch
Andy

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.