Can bus: Rückmeldung(ACK) während des Sendens?

Gast #3822848
Lesenswert?
• ▲
▼
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
#3822862
Lesenswert?
• ▲
▼
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.
Gast #3822868
Lesenswert?
• ▲
▼
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".
(Firma: Vescomp) #3822871
Lesenswert?
• ▲
▼
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.
Gast #3822887
Lesenswert?
• ▲
▼
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?
(Firma: Vescomp) #3822902
Lesenswert?
• ▲
▼
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...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.