CAN Arbitrierung

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

Reply to
Gerhardt Hohn
Loading thread data ...

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).

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.

Reply to
Thomas Rehm

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
Reply to
Oliver Bartels

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

Reply to
Gerhardt Hohn

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.