Forum: Mikrocontroller und Digitale Elektronik "konstruktive Kollisionserkennung"?


von giga (Gast)


Lesenswert?

In Beitrag "Re: DALI Adressierung: Konfliktbeherrschung bei Antwort mehrerer Slaves" schrieb Guido 
Körber:

> Grundsätzlich sollte man so eine langsame Kommunikation mit einer konstruktiven 
Kollisionserkennung aufbauen, also so, dass eine Kollision auf dem Bus durch zwei 
gleichzeitig sendende Knoten nicht dazu führt, dass das ganze Paket kaputt geht, 
sondern, dass Knoten als unterlegen aus der Kommunikation ausscheiden.

Wie soll das elektronisch gehen (Dominanz des ersten Senders)?
Oder ist damit gemeint, dass die Sender prüfen, ob was auf dem Bus ist?
Das geht aber wahrscheinlich nicht bitweise, sondern paketweise?

https://de.wikipedia.org/wiki/Carrier_Sense_Multiple_Access/Collision_Detection 
sendet offenbar ein JAM und macht die laufende Übertragung kaputt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

giga schrieb:
> Das geht aber wahrscheinlich nicht bitweise, sondern paketweise?
Der CAN-Bus arbitriert den Bus Bit für Bit.

Die Belegungsaushandlung über die Adresse läuft dort "nicht 
(zer)störend", denn die 0 ist dominant und "gewinnt" gegen eine 1. Auf 
diese Art "gewinnt" die niederwertigste Adresse die Arbitrierung.

: Bearbeitet durch Moderator
von A. S. (rava)


Lesenswert?

genau:
* Der Bustakt ist bekannt, der Bus ist kurz
* jeder hört auf das Medium und sendet nur, wenn es frei ist.
* jede Nachricht beginnt mit einer sender-id, die die Priorität 
darstellt
* sollten zwei Teilnehmer gleichzeitig senden, "gewinnt" der Teilnehmer 
mit der höheren Priorität. Das ist z.B. elektrisch mittels 
Treiberwiderständen gelöst.
* der andere Teilnehmer erkennt (bitweise), dass das Medium nun doch 
belegt ist und muss sofort warten.
* Das hochpriore Paket kann unbeeinträchtigt gesendet werden

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Man kann z.B. in der Arbitrierungsphase immer nur ein Bit je Byte 
senden, also nur 0xFF oder 0x00. Dann hat der unterlegene Master Zeit, 
sich beim nächsten Byte abzuschalten.

Etwas ähnliches wird auch bei CAN-FD gemacht. Die Datenrate wird erst 
nach erfolgter Arbitrierung hochgesetzt. Nur macht das komplett die 
CAN-Hardware.

von giga (Gast)


Lesenswert?

Danke, jetzt hab ich's.

Siehe auch: 
https://de.wikipedia.org/wiki/Controller_Area_Network#Arbitrierung,_Priorit%C3%A4t

https://de.wikipedia.org/wiki/I%C2%B2C#Arbitrierung_im_Multimaster-Betrieb

Der Bus ist so langsam, dass auch ohne Synchronisierung eine laufende 
Sendung erkannt werden dürfte (und falls wirklich mal exakt gleichzeitig 
gesendet wird, dann die dominante Adresse gewinnt).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

giga schrieb:
> Der Bus ist so langsam, dass auch ohne Synchronisierung eine laufende
> Sendung erkannt werden dürfte
So ist die Sicht technisch korrekt: der Bus ist physikalisch so kurz, 
dass auf der gesamten Buslänge nur 1 Bit "Platz" hat und alle parallel 
angeschlossenen Teilnehmer das selbe Bit auswerten und manipulieren.

Je kürzer der Bus ist, um so schneller darf sich dieses eine Bit ändern.

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.