Forum: Mikrocontroller und Digitale Elektronik CAN Bus Acknowledgebit


von Florian S. (sirius7)


Lesenswert?

Hallo,

1. je mehr ich für CAN lerne, desto mehr komme ich durcheinander. Wie 
soll eigentlich Acknowledge Bit beim CAN-BUS funktionieren, wenn er 
eigentlich nicht teilnehmer-orientiert, sondern nachrichten-orientiert 
ist? Wie ich verstanden, es werden nicht die Teilnehmer selbst 
adressiert, sondern Nachricht wird auf Bus gelegt und nach Bedarf (also 
nach zutreffendem ID) gelesen.. Wer soll da also das Lesen bestätigen?

2. wenn CAN kein Acknowledge Bit erhält, werden alle Teilnehmer am Bus 
abgeschaltet?

bitte um Hilfe, es ist viel zu viel Info, das sich widerspricht, ich 
brauch da mal einen Anstoß

danke

: Bearbeitet durch User
von blabla (Gast)


Lesenswert?

Alex S. schrieb:
> Wer soll da also das Lesen bestätigen?

Jeder Teilnehmer der eine Botschaft empfängt, bei der die Prüfsumme zum 
Nachrichteninhalt passt.

Passt bei einem Teilnehmer die Prüfsumme nicht zum Inhalt schreibt 
dieser dominant in den Error Frame und alle Teilnehmer verwerfen die 
Botschaft

Alex S. schrieb:
> wenn CAN kein Acknowledge Bit erhält, werden alle Teilnehmer am Bus
> abgeschaltet?

Nein, die Nachricht wird verworfen/ignoriert. Der Sender setzt seinen 
Fehlerzähler hoch.

von lambda (Gast)


Lesenswert?

Also ACK ist doch sogar schon im Wikipedia-Artikel zu CAN ausreichend 
erklärt.

1) Jeder Knoten, der die Nachricht empfängt und die CRC geprüft hat, 
überträgt im ACK-Slot einen dominanten Pegel. Dabei ist es egal ob das 
einer oder alle Knoten machen. Lediglich wenn garkein Knoten ein ACK 
sendet und der Bus damit im rezessiven Zustand bleibt, wird dies beim 
Empfänger erkannt. Zusätzlich wird danach von allen Knoten, die den 
Fehler erkannt haben, ein Error-Frame gesendet.

2) Alle Knoten vom Bus zu trennen macht bei einem einfachen Fehler wenig 
Sinn. Passiert ein Fehler und der sendende Knoten erkennt, dass kein ACK 
zurück kommt, kann er die Nachricht einfach nochmal schicken. 
Normalerweise hat auch jeder Knoten intern einen Zähler und schaltet 
nach einer bestimmten Anzahl fehlerhaft gesendeter Nachrichten erstmal 
eine Weile (oder bis zu Neustart) ab um den Bus nicht zu 
beeinträchtigen.

von Marc S. (marc_s86)


Lesenswert?

um es nochmal klar zu sagen: das ACK bit signalisiert nur, dass die 
Nachricht korrekt gesndet wurde, nicht dass irgenwer damit etwas 
anfangen konnte.

von Florian S. (sirius7)


Lesenswert?

aso, hab verstanden) vielen Dank! ihr habt mir sehr weitergeholfen!

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.