Hallo Leute, in Can bus ist es ja so, dass zur gleicher Zeit immer nur ein Teilnehmer Sendet. Wenn er fertig ist, erst dann folgt die nächste Prüfung wer jetzt senden darf. Nun Ok, aber: Ein Frame enthählt ja diese ACK, welche die Rückmeldung von anderen Teilnehmern bei korrektem Empfang der Nachricht ist. Hier meine Frage: Wie kann es sein, dass ein Teilnehmer, während des Sendens eine Rückmeldung empfangen kann? Was habe ich hier übersehen? vielen Dank und Grüße
Bei CAN kann es ja durchaus zu Kollisionen kommen. Das passiert ja wenn ausgehandelt wird wer den BUS als nächstes bekommt. Da ist die "0" dominant. Wenn ein Teilnehmer die sendet ist der BUS auf "0". Das empfangen dann ja alle Sender und die mit einer "1" ziehen sich zurück. Beim ACK wird das wohl genauso sein. Ist bestimmt schon 20 Jahre her das ich mich mal mit CAN beschäftigt hatte.
:
Bearbeitet durch User
Der Sender hält den Ack-Slot rezessiv. Die Empfänger überschreiben dann (dominanter Pegel).
Ja, der Sender schaltet beim ACK Bit auf "empfangen" um, die die Empfänger schalten auf "Senden" um, und senden das ACK bit. Da das ACK bit automatisch vom CAN-Controller aller Empfänger gesendet wird, ist es keine Möglichkeit um festzustellen, ob die Nachricht beim gewünschten Ziel angekommen ist und ob das Ziel überhaupt noch "lebt".
Heizer schrieb: > Wie kann es sein, dass ein Teilnehmer, während des Sendens eine > Rückmeldung empfangen kann? Was habe ich hier übersehen? Vielleicht RS485 und CAN verwechselt ? Natürlich kann beim CAN nicht gleichzeitig gesendet und empfangen werden. Aber Log.0 ist dominant, d.h. wer auch immer den CAN-Bus auf Log.0 zieht, hat gewonnen. ;-) So etwas nennt man Arbitration und deswegen verliert eine 0xFFF Adresse immer gegen eine 0x001 Adresse.
:
Bearbeitet durch User
Angenommen diese 3 Teilnehmer sind im Netz. sie senden(die länge stimmt natürlich nicht aber nur als beispiel): A 1 0 0 1 0 1 1 B 1 0 0 0 0 1 1 C 1 0 0 1 0 1 1 die letzten 2 Bits (1 1) sollen ACK sein. B gewinnt ya ab der 4. Bitfolge. D.h B wird senden egal was die anderen haben. Wie kann es dann sein, dass ab der 6. bitfolge ACK von anderen überschrieben wird?
A und C stellen sofort den Sendebetrieb ein wenn B die 0 sendet. Und ein ACK wird nur nach einem kompletten gültigen Telegramm gesendet.
:
Bearbeitet durch User
Heizer schrieb: > B gewinnt ya ab der 4. Bitfolge. D.h B wird senden egal was die anderen > haben. Wie kann es dann sein, dass ab der 6. bitfolge ACK von anderen > überschrieben wird? Nein. Bit senden, CAN-Bus überprüfen. Wenn gleich, weitersenden. Wenn nicht, sofort aufhören. A und C kommen gar nicht bis ACK. Und nur der Empfänger auf B zieht beim ACK den CAN-Bus auf Log.0. Natürlich besteht da keine Möglichkeit festzustellen, wer nun den Empfang bestätigt hat, aber da A und C nicht zu Ende gesendet haben...
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.