Forum: Mikrocontroller und Digitale Elektronik Sendeabgleich - Wer darf wann senden?


von poiu (Gast)


Lesenswert?

Hi Leute!

Ich hab hier zwei Sender gegeben. Sender S1 und Sender S2, welche beide 
über einen CAN-Bus kommunizieren.

Sender S1 hat diese ID: 1000b
Sender S2 hat diese ID: 1010b
1
S1 UND S2     Bus
2
1        1         1
3
0        0         0
4
0        1         0
5
0                   0


Erklärung:

S1 sendet 1, S2 sendet 1: Auf dem Bus steht auf Grund der 
UND-Verknüpfung eine 1. S2 und S1 senden ihre nächste Stelle der ID, da 
bei beiden die gesendete 1 rezessiv ist.

S1 sendet 0, S2 sendet 0: Auf dem Bus steht auf Grund der 
UND-Verknüpfung eine 0. Da beide eine dominante 0 senden senden beide 
wieder die nächste Stelle ihrer ID's.

S1 sendet 0, S2 sendet 1: Auf dem Bus steht auf Grund der 
UND-Verknüpfung eine 0. S2 sendet aber nun nichts mehr, da Wert seiner 
ID gegenüber dem momentan am Bus befindlichen Wert rezessiv ist.

S1 sendet nun noch die letzte Stelle, die 0. Somit ist der Sendeabgleich 
abgeschlossen und S1 sendet seine Daten.



Nun meine Frage an euch: Stimmt meine Erklärung soweit?

von poiu (Gast)


Lesenswert?

Oh, jetzt hab ich was vergessen!

Angenommen wir haben diese ID's:

Sender S1: 1100b
Sender S2: 0000b

1 UND 0 = 0. Nun vergeleicht S1 seinen Wert mit dem am Bus befindlichen 
Wert. Der Wert am Bus ist dominant und S1 stellt seinen Sendeabgleich 
ein. Sender 2 sendet nun noch seine letzten ID-Stellen. Diese sind immer 
dominant. Aber was würde passieren, wenn an der letzten Stelle von S2 
nun noch eine rezessive 1 stehen würde? Ist dies dann egal, weil der 
konkurrierende Sender fehlt und Sender 2 von Haus aus senden darf?

von Karl H. (kbuchegg)


Lesenswert?

Ich würde es so in einem Satz zusammenfassen:

Wenn ein Sender versucht, ein Bit (0 oder 1) auf den Bus aufzuschalten 
und beim Nachmessen feststellt, dass der Bus nicht den Zustand 
eingenommen hat, den er versucht hat ihm aufzuzwingen, dann hält er sich 
in nächster Zeit aus dem Verkehr am Bus raus, weil ganz offensichtlich 
am Bus bereits etwas vor sich geht, was er nicht stören darf.

OK. 2.ter Satz: Und das (das Raushalten) macht er sofort und ohne 
Verzögerung.

von Route_66 (Gast)


Lesenswert?

Hallo!
Damit ergibt sich zwangsläufig eine Hierarchie der Sender und auch eine 
Priorität der Nachrichten: Alarmmeldungen haben Vorrang vor anderen 
Informationen.

von Lutz (Gast)


Lesenswert?

poiu schrieb:
> Sender S1 hat diese ID: 1000b
> Sender S2 hat diese ID: 1010b

Route_66 schrieb:
> Damit ergibt sich zwangsläufig eine Hierarchie der Sender und auch eine
> Priorität der Nachrichten: Alarmmeldungen haben Vorrang vor anderen
> Informationen.

Bei "normalem" CAN hat die ID des Senders sowas von gar keine 
Auswirkung! So es sie denn dort überhaupt gibt.

Der Identifier der zu sendenden Nachricht wird auf dem Bus arbitriert.
Der Standardverständnisfehler bei "normalem" CAN ist, daß der Identifier 
etwas über den Inhalt des Frames aussagt und nicht, von wem er kommt 
oder für wen er bestimmt ist. Klar kann man das Konzept auch 
vergewaltigen...

von poiu (Gast)


Lesenswert?

> Bei "normalem" CAN hat die ID des Senders sowas von gar keine
> Auswirkung! So es sie denn dort überhaupt gibt.
>
> Der Identifier der zu sendenden Nachricht wird auf dem Bus arbitriert.
> Der Standardverständnisfehler bei "normalem" CAN ist, daß der Identifier
> etwas über den Inhalt des Frames aussagt und nicht, von wem er kommt
> oder für wen er bestimmt ist. Klar kann man das Konzept auch
> vergewaltigen...

Heißt das nun, dass meine "Aufgabe" oben falsch ist?

von Karl H. (kbuchegg)


Lesenswert?

Es besagt lediglich, dass deine Ansicht, die ID wäre eine 'Adresse des 
Senders' falsch ist. Nun ja, nicht unbedingt falsch. Aber CAN war nie so 
gedacht.

Die ID ist eine Objekt-Id.
Zb Die ID der Nachricht: Dies ist die Kühlertemperatur.

Ein Sender (und zwar NUR 1 Sender) schickt diese Nachricht raus an alle 
die es hören wollen. Empfänger hören sich die Nachricht an und 
entscheiden: Ey, cool. Kühlwassertemperatur - kann ich brauchen.
Wer oder was diese Message auf den Weg geschickt hat, interessiert 
hingegen niemanden.

Natürlich kann man das alles auch misbrauchen und jedem Sender eine oder 
mehrere ID geben. Denn klar kann der Empfänger auch den Umkehrschluss 
machen: Kühlwasser? Die Msg kann nur vom µC am Kühler kommen!

Aber eigentlich war das nie der Sinn der Sache.

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.