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
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.
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."
> "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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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