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
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?
Baudrate? Topologie - Stern, Baum, Linie? Terminierung? Leitung - verdrillt, geschirmt?
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.
:
Bearbeitet durch User
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.