www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN-Interface mit Silabs C8051F500


Autor: Kay Kubitz (kkubitz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jens O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Marcel H. (xamos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.