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


von Bier-Kalle (Gast)


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?

von Bier-Kalle (Gast)


Lesenswert?

keiner ne Idee?

von uCler (Gast)


Lesenswert?

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

von Bier-Kalle (Gast)


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.

von uCler (Gast)


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

von gast (Gast)


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!

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
Noch kein Account? Hier anmelden.