CAN Arbitrierung

G

Gerhardt Hohn

Guest
Hallo,

weiß einer was passiert, wenn 2 CAN Knoten zeitgleich Nachrichten mit
demselben Identifier rausschicken? In meiner Simulation (CANoe) kommen beide
nacheinander auf den Bus. Es handelt sich dabei um 2 absolut identische
Nachrichten (gleiche ID, gleiches Datenfeld). Beide Telegramme müssten doch
identisch aussehen, woran erkennen denn die Knoten, dass ein anderer nochmal
genau das gleiche geschrieben hat?

Oder spielt mir da die Simulation einen Streich, und tatsächlich käme die
Nachricht nur einmal auf den Bus?

Gruß,
Gerhardt
 
Gerhardt Hohn wrote:
weiß einer was passiert, wenn 2 CAN Knoten zeitgleich Nachrichten mit
demselben Identifier rausschicken?
Sofern der Nachrichteninhalt unterschiedlich ist, wird keine der
beiden Pakete angenommen werden, weil die Checksumme nicht mehr stimmt
(die Dateninhalte beider Pakete ver-ODERn sich).

Diese Frage ist aber eher von akademischen Interesse, weil schon bei
der Vergabe der Identifier auf unterschiedliche IDs geachtet werden
muss. Ähnlich wie im TCP/IP-Netzwerk, wo man ja auch nur unter-
schiedliche IP-Adressen vergibt (außer man hat ein akademisches
Interesse, was sonst passiert).

Beide Telegramme müssten doch identisch aussehen, woran erkennen
denn die Knoten, dass ein anderer nochmal genau das gleiche
geschrieben hat?
Sofern die Pakete (ID + Daten + CRC) absolut identisch sind und auch
noch zeitgleich gesendet werden, gibt es letztendlich auch keine
Kollission. Das sind aber theoretische Gedankenspielereien, die
keinen Bezug zur Praxis haben.

Thomas.
 
On Sat, 5 Jul 2003 13:01:47 +0200, "Gerhardt Hohn" <gh-un@gmx.net>
wrote:
weiß einer was passiert, wenn 2 CAN Knoten zeitgleich Nachrichten mit
demselben Identifier rausschicken? In meiner Simulation (CANoe) kommen beide
nacheinander auf den Bus. Es handelt sich dabei um 2 absolut identische
Nachrichten (gleiche ID, gleiches Datenfeld). Beide Telegramme müssten doch
identisch aussehen, woran erkennen denn die Knoten, dass ein anderer nochmal
genau das gleiche geschrieben hat?
Wenn sie *nacheinander* auf den Bus kommen und nicht gleichzeitig,
gibt es keine Kollision. Der CAN Knoten, der die zweite Nachricht
schicken soll, wartet, bis der Bus frei ist. Ein CAN Sender darf den
Bus nicht nutzen, solange noch ein anderer mit einer bereits
angefangenen Nachricht diesen belegt hat.

Ansonsten scheint mir das eine rein akademische Frage zu sein,
denn unterschiedliche Sender haben in der Praxis unterschiedliche
ID's, man will gerade bei gleichzeitigem Sendezeitpunkt die
Arbitrierung über die ID (kleinste zuerst) nutzen.

Wären sie wirklich exakt gleich zum gleichen Zeitpunkt, dann
treiben halt zwei Controller den Bus und der Empfänger sieht
nur ein Paket.
Eine Sequenzsteuerung *gibt es bei CAN nicht*, es zählen bei der
typischen CAN Standardanwendung "Dose" (Auto) immer die
neuesten Werte in den Feldern (z.B. Byte 1/ID 123 = Tankstand,
Byte 4/ID 456=momentane Drehzahl, *höchstens* noch bezogen
auf ein Zeitintervall, wenn der Controller Zeitstempel kann).

Natürlich gibt es auch Controller, die keine Mailboxen, sondern eine
große Queue haben, und es sollen auch schon Leute
versucht haben, TCP/IP Web Daten in 8 Byte Pakete zu zerlegen
und über CAN zu schicken. Dafür ist CAN aber nicht gebaut,
wer solchen Schwachfug versucht, hat selber schuld ;-)
Merke: CAN ist CAN und TCP/IP ist TCP/IP ...

Gruß Oliver

--
Oliver Bartels + Erding, Germany + obartels@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
 
danke schonmal an alle für die Antworten, das hat mir bereits
weitergeholfen. Ich habe allerdings noch weitere Fragen, werde aber einen
neuen Thread aufmachen.

Gruß,
Gerhardt
 

Welcome to EDABoard.com

Sponsor

Back
Top