www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN-CAN Router Prinzip?


Autor: Bier-Kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mohlzeit!

Ich habe ein µC Board mit 3 separaten CAN Anschlüssen. Ich mache mir 
gerade Gedanken wie ich ein Routing-Mechanismus zwischen diesen aufbaue.
Jedes der 3 CAN Subnetzte hat nur einige Nachrichten, die an ein anderes 
Subnetz gehen sollen. Nur wie gestalte ich die Routingtabelle in der der 
Host nachsieht?
Da ein CAN Frame keine Zieladresse beinhaltet ist es nicht so einfach 
wie bei Ethernet Protokollen.
Dies soll die Pufferspeicher der CAN Ports entlasten und einen Timeout 
vorbeugen (wenn Nachricht gesendet werden soll aber nicht rausgeht weil 
kein Empfänger da ist).

Eine ganz simple ungenaue Variante ist das Port-zu-Port Routen:
z.B.
CAN Port1 immer weiterleiten nach CAN Port 3
CAN Port3 ... nach CAN Port 2

ist aber ungenau da immer mal Frames auftreten können die am Ziel Port 
keinen Empfänger haben könnten und so bis zum Timeout gewartet wird 
(inzwischen ist der Puffer schon überfüllt)


hat jemand eine Idee wie man das genauer lösen kann?

Autor: Bier-Kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner ne Idee?

Autor: uCler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmhh - dreimal durchgelesen - aber ich verstehe die Frage nicht.
Bei wem soll warum ein Timeout auftreten?
Welcher Puffer ist warum ueberfuellt?

Autor: Bier-Kalle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Prinzip eines CAN Gateways wie sie im Auto sind.

Es gibt mehrere CAN Netze (MotorCAN, InnenraumCAN, INFOCAN...)
Aber es gibt nur einige bestimmte Frames des Motorraumes die auch mit 
dem Innenraum kommunizieren wollen.

Wie gestalte ich dann die Routingtabelle?
Ein Puffer wäre überfüllt wenn alle Subnetz-Nachrichten an alle anderen 
Subnetze gesendet werden. Z.B. Radio-AN wird zum Motorraum geschickt. 
Das wäre sinnlos und die Nachricht geht nicht auf den Bus -> es wird bis 
zum Timeout gewartet und die nächste Nachricht wird versucht zu senden. 
Vorrausgesetzt es funktioniert in dieser Weise.

Autor: uCler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein CAN-Frame selbst will nicht kommunizieren - der ist einfach nur 
Broadcast auf dem Bus.

Wenn Du konkret ein Auto ansprichst - da entscheidet der Hersteller wie 
die 'Routingtabelle' auszusehen hat.

Wenn z.B. der Innenspiegel (Regensensor) einen Frame absetzt braucht das 
Rearmodul (Heckwischer) noch die Information ob der Rueckwaertsgang 
eingelegt ist. Kommt die jetzt vom Getriebe (engine compartment) oder 
vom Waehlhebel (passenger compartment)? Zusaetzlich fehlt ja noch die 
Information, ob der Scheibenwischer ueberhaupt an ist (Lenkradmodul). 
Das Modul welches den Frontwischer steuert (meist im Motorraum), will 
auch gerne noch die aktuelle Geschwindigkeit.

Das sind alles Informationen, die kann nur der Hersteller wissen. Oft 
werden nur wenige Bits eines Frames mit anderen Bits und Bytes von 
anderen Frames zusammengedroeselt und uebers Gateway weitergegeben. Und 
wenn dann die Diagnose aktiviert wird sieht wieder alles ganz anders 
aus...

Aber ich verstehe Deine Frage leider immer noch nicht. Wenn DU ein 
Gateway erstellen moechtest, dann kannst NUR DU entscheiden, was wann, 
wie oft, warum, von wo nach wo geroutet werden soll.

Gruss Udo

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich das jetzt richtig erkenne, dann solltest DU wissen welches 
Frame wohin gehört!

In der Praxis würde ich hier nach cob-Id bzw. identifier unterscheiden, 
dafür musst Du aber wissen wer alles consumer dieses Frames ist! Und 
dann dürfte es kein Problem mehr sein eine routingtabelle zu erstellen. 
Das grössere Problem wird sein herauszufinden, im welchem Netz überall 
consumer von den jeweiligen frames / id's sitzten! - das kann aber eben 
nur der erbauer des Netzes wissen der einen Überblick über alle 
Netzteilnehmer hat!

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.