Forum: Mikrocontroller und Digitale Elektronik Fragen zu CAN protocol


von H. R. (hacker_r)


Lesenswert?

Hi
paar blöde Fragen zu CAN:
Ich habe 50 CAN Steuergeräte an meinem CAN Bus:

1. wird das acknowledge bit von allen runter gesetzt?
2. Wenn ja, wo ist der Sinn, warum alle?
3. Ack Feld hat 2 bits. ack und delimiter. Wozu ist der Delimiter gut?
4. Aus wiki: "Der Acknowledge-Slot wird verwendet, um den Empfang eines 
korrekten CAN-Frames zu quittieren". Was heisst hier Korrekt? Dass CRC 
stimmt?
5. Wenn eine falsche Message geschickt wird, und ein einziger der 50 
Teilnehmer aufgrund einer Frequenzproblematik das ACK fälschlicherweise 
runterzieht, gilt die Nachricht für den Sender dann als korrekt?

Danke

von X2 (Gast)


Lesenswert?


von Olli Z. (z80freak)


Lesenswert?

H. R. schrieb:
> Ich habe 50 CAN Steuergeräte an meinem CAN Bus:
>
> 1. wird das acknowledge bit von allen runter gesetzt?
Theoretisch ja, da alle die Nachricht empfangen. Praktisch reicht aber 
einer. Das ACK dient ja in erster Linie dem Absender der Nachricht um 
festzustellen ob wenigstens einer am Bus lauscht.

> 2. Wenn ja, wo ist der Sinn, warum alle?
Das liegt im Design des CAN-Bus. Der ist ja Nachrichtenorientiert und es 
gibt daher für den Absender keine Möglichkeit festzustellen ob jemand 
sich für seine Info interessiert hat.

> 3. Ack Feld hat 2 bits. ack und delimiter. Wozu ist der Delimiter gut?
> 4. Aus wiki: "Der Acknowledge-Slot wird verwendet, um den Empfang eines
> korrekten CAN-Frames zu quittieren". Was heisst hier Korrekt? Dass CRC
> stimmt?
Siehe oben. Mit "korretem Empfang" ist halt gemeint, das nur wenn 
wenigstens EIN Teilnehmer an Deinem Bus das Paket vollständig, also mit 
gültiger CRC empfangen hat, dieses Bit gesteuert wird und zwar vom 
Empfänger.

> 5. Wenn eine falsche Message geschickt wird, und ein einziger der 50
> Teilnehmer aufgrund einer Frequenzproblematik das ACK fälschlicherweise
> runterzieht, gilt die Nachricht für den Sender dann als korrekt?
Kommt drauf an was Du als "falsche Message" definierst. Wenn es einen 
Übertragungsfehler aufgrund Störeinstrahlung oder elektrischem einwirken 
gegeben hat, stimmt die CRC nicht und dann wird auch kein ACK gesteuert.

Und ob nun ALLE Teilnehmer am Bus die Nachricht korrekt empfangen haben 
oder nicht, ist aus Sicht der Nachricht egal. Wenn es aufgrund des 
darüberliegenden Protokolls oder Anwendung wichtig ist dies 
sicherzustellen, muss hier eine Transportsicherungsschicht implementiert 
werden. Das ist nicht Bestandteil von CAN. In Netzwerktopologie 
ausgedrückt ist CAN zu sehen wie Ethernet, es definiert nur die 
elektrische Übertragung  (OSI Layer 1) und Adressierung (OSI Layer 2).

von tinCAN (Gast)


Lesenswert?

Olli Z. schrieb:
> ob nun ALLE Teilnehmer am Bus die Nachricht korrekt empfangen haben
> oder nicht, ist aus Sicht der Nachricht egal. Wenn es aufgrund des
> darüberliegenden Protokolls oder Anwendung wichtig ist dies
> sicherzustellen, muss hier eine Transportsicherungsschicht implementiert
> werden. Das ist nicht Bestandteil von CAN. In Netzwerktopologie

Hmm, die Error-Frames sind doch Bestandteil von CAN..

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.