Wer entscheidet den Wert des 29-Bit-Identifier im CAN-Rahmen

Gast #169389
Hi,

der Entwickler.

Er bestimmt welche Nachrichten von den CAN-Knoten gesendet werden und
welche IDs sie erhalten.

Zumindest wenn nur von CAN die Rede ist.

Bei CANOpen, DeviceNet oder anderen Protokollen, die auf dem CAN-Bus
basieren, sieht das anders aus.

Gruß

 Dirk
Gast #169390
Hi @All,

dazu habe ich auch noch eine kleine Frage!!

Kann ich mit der gleichen ID senden und empfangen!?

Ich habe ein Board, das sendet mir alle 5Sec einen Wert an den PC!
Ich sende aber vom PC aber auch zu meinem Board mir der gleichen ID!

Kann das Probleme geben!?

Mfg

Klaus
Gast #169391
eigentlich ja nicht, da alle Nachrichten von allen Empfängern auch
gelesesen werden können.
Die ID sorgt eigentlich nur für eine Priorisierung der Nachrichten auf
dem Bus(je mehr Nullen in der ID vorhanden sind, um so höher ist die
Priorität [zumindest habe ich das so verstanden, da die 0 nach das
dominante Bit ist; sollte ich falsch liegen, möge man mich
berichtigen]). Jeder Empfänger hat eine gewisse Anzahl von
Empfangsregistern, denen wiederum Filter vorgeschaltet werden können,
was zu einer Adressierung des einzelnen CAN-Knotens führen kann.

Somit müsste es IMHO möglich sein, mit nur einem einzigen Identifier
mehrere Knoten am Bus zu betreiben. Effizient ist das aber nicht...
Gast #169392
> Kann das Probleme geben!?
ja! Denn wenn gleichzeitig von mehreren Sendern die gleiche CanId
verschickt wird (und der Datenteil unterschiedlich ist), so gewinnen
alle Teilnehmer die Busarbitrierung (da ja alle zurücklesen, daß Sie
alleinig den Bus treiben). Allerdings unterscheidet sich der Datenteil,
was dann zu einem Protokollfehler führt, da die Arbitrierung nur auf die
CanId selbst angewendet wird. Der canhardwareinterne Fehlerzähler steigt
und das Telegramm wird wiederholt... natürlich auch von allen
gleichzeitig. usw.

Praktisch wird's allerdings meistens gut gehen...

Also: don't do this athome... ;-)
Gast #169393
"Kann ich mit der gleichen ID senden und empfangen!?"


Auf keinen Fall !!!

Damit ist ja eine Arbitrierung unmöglich !

D.h. sobald beide gleichzeitig den gleichen ID senden, wird in den
Datenbytes die Sendung fehlerhaft sein und abgebrochen, ein Retry
gestartet, wieder fehlerhaft ... bis die Errorcounter überlaufen und
beide in den Passiv-Status gehen. Dein CAN-Netz ist zusammengebrochen
(->Watchdog-Reset).


Um sowas zu vermeiden, sende ich im 29Bit-Identifier auch die einmalige
Senderadresse mit, dann gibt es keine Konflikte, auch wenn mal 2 Sender
den gleichen Empfänger adressieren.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.