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?
hmmhh - dreimal durchgelesen - aber ich verstehe die Frage nicht. Bei wem soll warum ein Timeout auftreten? Welcher Puffer ist warum ueberfuellt?
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.