Hallo Zusammen! ist es mit dem XC167 grundsätzlich möglich sich zwischen den CAN Bus zu schalten. Beispiel: Ein Steuergerät tauscht ständig Botschaften mit einer kleinen Station aus. Erste idee wäre erst einmal sich direkt vor diese Komponente mit dem XC167 zu schalten, heißt es sollen erst einmal alle Botschaften in beide Richtungen durchgelassen werden. In späteren Schritten sollten dann bestimmte Nachrichten manipuliert werden. Es würde sich dabei um ca.5-10Botschaften handeln, die zum einen zyklisch aber auch Ereignisgesteuert ablaufen. Hat jemand mit sowas erfahrung? Kann der XC167 sowas? Wäre sehr dankbar für jede unterstützende Antwort!! Viele Grüße Marco
Hallo, habe mal mit dem xc888 gearbeitet, der hat das gleiche CAN-Modul integriert. Routing zwischen zwei CAN-Bussen geht ohne Mitwirkung des Prozessors, wenn a) die Daten unverändert durchgereicht werden. b) die Busse nicht zu stark ausgelastet sind, sonst könnten Pakete verloren gehen wegen mangelndem "Paketpuffer" wenn nicht der controller eingreift. c) nur die IDs zwischen beiden Bussen unterschiedlich sind ("NAT" ist also in Hardware möglich) Falls du den Twincan als zwei unabhängige Cancontroller verwendest, gelten die Einschränkungen natürlich nicht. Dann muss der Controller aber die Arbeit machen. Meiner Erfahrung nach packt aber selbst dieser lame 8-Bitter, bei dem der Cancontroller umglaublich ineffizient angebunden ist, ein paar tausend paktete pro Sekunde in Software zu routen.
Vielen Dank für die Antwort, hab es mittlerweile auch geschafft Nachrichten beidseitig durchzuschleußen. Hab die Nachrichten mit einem Can-Analyzer erzeugt! Hab nur noch das Problem das ich einen ERROR Frame mitbekomme und das ganze nach kurzer Zeit dann abgebrochen wird. Noch eine Ahnung? Gruß Marco
Wie sieht deine jetzige Testschaltung des Busses aus? Hast du den Bus aufgetrennt den Kontroller zwischen rein? <====CAN1 <-> CAN2=====> \Controller/ Auf welcher Seite bekommst du die Error-Frames? Gruß, TManiac
genau so wie du TMAINIAC den Aufbau beschreibst sieht er aus! Mittlerweile funktioniert mein Testaufbau, obwohl ich nichts verändert habe. Eine Frage hätte ich noch!!! Ich will jetzt alle Botschaften durchlassen! kann ich die acceptance mask nur für eine bestimmte ID setzen? Oder ist es auch möglich zu sagen alle id`s können durchgelassen werden? Wenn ja wie kann ich das mit DAVE einstellen? Gruß Marco
Ja du kannst natürlich auch alle Nachrichten durch die Filter lassen. Dass ist dann aber nicht mehr Kontroller spezifisch sondern Bestandteil der CAN-Spec. Du hast zwei Register. Mit dem Ersteren (MSGAMRn) wählst du aus welche Bits der ID zur Filterung herangezogen werden. Oder besser du selektierst die Bits die NICHT herangezogen werden (XOR_Operation). Mit dem Zweiten (MSGARn) wird dann der benötigte Wert des vorher selektierten Bits verglichen (UND-Operation). Das ganze ist doch prima im Manual (Figure 22-10 Acceptance Filtering for Received Message Identifiers) dargestellt. Wenn du also keine Bits zur Überprüfung heranziehst sollten alle Nachrichten egal wie der Wert des zweiten Rigsters ist immer durchgehen. Gruß, TManiac
Danke für deine Unterstützung und den Hinweis, läuft soweit! Auf dem Bus den ich untersuche werden auch teilweise Error Frames gesendet. Hab mir jetzt mal in meinem Aufbau so einen Error Frame erzeugt und gesendet! Wird jedoch noch nicht vom Controller weitergeleitet! Gibt es eine möglichkeit das zu umgehen, damit auch Error Frames weitergeleitet werden. Hat jemand Erfahrung mit Error Frames! Noch jemand eine Idee?? Viele Grüße Marco
Also Error-Frames sind keine Nachrichten im Sinne von CAN. Sie sind ein Zeichen, dass die Kommunikation nicht stabil läuft. Error Frames, werden nie aktiv versendet (außer von Testtools) und sollten auch nicht geroutet werden (normale CanController können dies auch nicht). Sind die Error Frames auch zu sehen, wenn dein Bauteil nicht am Bus hängt? Folgende Tipps, wenn der Fehler nur auftritt sobald dein Baustein am Bus hängt. Ein erster Anlauf sind Reflektionen auf dem Bus. Sind die Endwiderstände bei dir vorhanden? Nummer zwei wäre eine nicht ganz passende Einstellung des Timings (Abtastzeitpunkte). Wenn du keine Werte vom originalen Bus hast musst du raten. Nummer drei es senden zwei oder mehr Teilnehmer mit der gleichen ID. Das ist ein Verstoß gegen die CAN-Spec. Passiert aber zum Beispiel, wenn beim Routen ausversehen der falsche Sendekanal angegeben ist (Sendekanal = Empfangskanal). All die Fehler können natürlich auch durch deinen Beobachter (Zitat: Can-Analyzer -> CanCard?) verursacht werden, wenn hier der Anschluss nicht stimmt (LowSpeed-Cabs, opt Version???) Gruß, TManiac
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.