Hallo, ich arbeite an einem Projekt mit mehreren Sensoren die via CAN die Daten zu einem PC übertragen sollen. Die Sensoren sind nicht untereinander synchronisiert und senden ihre Daten zufällig. Die Sensoren sind wie folgt aufgebaut: Prozessor: C8051F500 von Silabs mit 24Mhz (interner Oszillator) CAN-Treiber: TJA 1040 CAN-Bitrate: 1000 kBit/s Leitungslänge: insgesamt <10 m Am PC arbeite ich mit einem USB-CAN-Adapter von Lawicel. Die Leitung ist abgeschlossen und hat den richtigen Wellenwiderstand. Nun mein Problem: Die Buslast ist relativ hoch was zu häufigen Buskollisionen führt. Diese sollten Dank CAN keine Probleme bereiten. Leider kommt es jedoch trotzdem zu fehlerhaften Datenübertragungen (Dataframe hat den falschen Inhalt - sonst alles i.O.). Arbeite ich mit nur einem Sensor funktioniert alles ganz wunderbar (über Tage!) - doch bereits ab zwei Sensoren gibt es derartige Effekte. Die CAN-Identifier sind auf jeden Fall unterschiedlich. Ich konnte bereits eingrenzen wann genau der Fehler zustande kommt: Alle Sensoren senden 8 Messages direkt hinter einander. Wenn ein anderer Sensor sich "dazwischen drängelt" z.B. nach der dritten oder vierten Message des ersten Sensors so gibt es genau dabei diesen Übertragungsfehler. Bin für jeden Hinweis dankbar - rätsel seit bereits 3 Tagen ohne Erfolg. Vielen Dank
Hallo Kay, hast du in der Zwischenzeit eine Lösung für dein Problem? Wir haben seit kurzen auch genau dieses Problem. unsere Controller Infineon C167-CRLM Fujitsu MB96F346RSA schon mal vielen Dank für deine Antwort
Was du prüfen kannst: - Siehst du auf dem Bus Error- oder Overload Frames? - CAN Leitungen verdrillt? - Topologie Ok? Keine Sterne bauen, das gibt Reflektionen - Tritt der Fehler auch bei 500kb/s auf? - CAN High/Low an einem Sensor vertauscht? Dann funktioniert die Arbitrierung nicht, könnte genau diesen Fehler auslösen. - Alle Busteilnehmer auf die gleiche Datenrate eingestellt? Hilfreich wäre ein Oszillogramm vom Bus. Achtung: nicht die Masse vom Scope auf eine CAN Leitung hängen. Zwei Kanäle nehmen. CAN ist hart im nehmen, das funktioniert auch noch halbwegs bei heftigen Fehlern. Wenn die Arbitrierung nicht sauber funktioniert, ist das fast immer ein Hinweis darauf, das mit dem Bus physikalisch was nicht stimmt.
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.