Forum: Mikrocontroller und Digitale Elektronik xc167 TwinCAN Manipulation von Botschaften


von Marco (Gast)


Lesenswert?

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

von Andreas R. (rebirama)


Lesenswert?

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.

von Marco (Gast)


Lesenswert?

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

von TManiac (Gast)


Lesenswert?

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

von Marco (Gast)


Lesenswert?

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

von TManiac (Gast)


Lesenswert?

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

von Marco (Gast)


Lesenswert?

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

von TManiac (Gast)


Lesenswert?

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