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.
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
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
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.
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.