Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Frage


von Peda (Gast)


Lesenswert?

Ist es richtig, dass pro Identifier nur ein Sender existieren darf?
Aber es dürfen mehrere Empfänger pro Identifier exisitieren.

Was wenn Regel 1 verletzt wird? Zwei Sender senden zur selben zeit den 
selben Identifier. Die Arbitrierung würde dann ja erst nach Ablauf der 
ID einsetzen.
Oder wie? Wqas geschieht, wenn auch die Datenbytes gleich sind?

von EFA (Gast)


Lesenswert?

Jeder Knoten darf beliebige Identifier senden. Somit dürfen auch zwei 
unterschiedliche Knoten Nachrichten mit dem gleichen Identifier 
verschicken.
Falls zwei Knoten identische Nachrichten zum gleichen Zeitpunkt 
versenden, wird die Nachrich ja nicht verfälscht. Es bestht also für 
keinen der beiden Busteilnehmer die Notwendigkeit, die Übertragung 
abzubrechen.

von A.K. (Gast)


Lesenswert?

Sicher? Mir spukt im Kopf herum, dass er bei Datenabweichung jenseits 
des Arbitrationsfensters (also der ID) mosert.

von willivonbienemaya (Gast)


Lesenswert?

"
Ist es richtig, dass pro Identifier nur ein Sender existieren darf?
Aber es dürfen mehrere Empfänger pro Identifier exisitieren.
"

richtig


"
Jeder Knoten darf beliebige Identifier senden. Somit dürfen auch zwei
unterschiedliche Knoten Nachrichten mit dem gleichen Identifier
verschicken.
"

falsch

"
Was wenn Regel 1 verletzt wird? Zwei Sender senden zur selben zeit den
selben Identifier. Die Arbitrierung würde dann ja erst nach Ablauf der
ID einsetzen.
"

Das ist ein Fall der eigentlich nicht eintreten soll. es würde ein 
Fehler bei den Daten auftreten, was eigentlich nicht passieren darf.



"
Oder wie? Wqas geschieht, wenn auch die Datenbytes gleich sind?
"

nichts, das wäre der Glücksfall, aber der ist wohl sehr 
unwahrscheinlich.

von Obelix (Gast)


Lesenswert?

Wenn die Daten unterschiedlich sind past die CRC höchstwarscheinlich 
nicht mehr.

von Michael W. (mictronics) Benutzerseite


Lesenswert?

@willi

>Jeder Knoten darf beliebige Identifier senden. Somit dürfen auch zwei
>unterschiedliche Knoten Nachrichten mit dem gleichen Identifier
>verschicken.
>
>falsch

Warum soll diese Aussage falsch sein?

Bei CAN werden die Nachrichten durch die ID addressiert, also die Daten, 
nicht die Hardware (der Empfänger) selbst.
Deshalb ist es durchaus möglich, das zwei unterschiedliche Knoten 
(Hardware) Nachrichten mit der selben ID verschicken. Nicht zur selben 
Zeit versteht sich.

Die Arbitrierung gilt in erster Linie nur für die ID und das RTR Bit.
Sollten zwei Knoten eine wirklich identische Nachricht, mit selben 
Dateninhalt, zur exakt selben Zeit senden, wird garnichts basieren.
Da es für beide Knoten keine Verletzung der Arbitrierung und der 
folgenden Daten gibt.

Basiert das selbe, nur mit gleicher ID, aber unterschiedlichen Daten, 
gilt:
Der "0" Pegel ist dominant auf dem Bus. Das bedeutet simple: Die 
Nachricht mit den meisten Nullen gewinnt.

Eine gute Erläuterung zu CAN in deutscher Sprache.

http://www.mictronics.de/download/can_interface/Can-Protokoll.pdf

von willivonbienemaya (Gast)


Lesenswert?

"
Warum soll diese Aussage falsch sein?
"

Weil es so meines Wissens so spezifiziert ist. Falls ich mich da irre, 
dann weil es keinen Sinn macht.




Der Link geht bei mir nicht.

von A.K. (Gast)


Lesenswert?

> Basiert das selbe, nur mit gleicher ID, aber unterschiedlichen
> Daten, gilt: Der "0" Pegel ist dominant auf dem Bus. Das
> bedeutet simple: Die Nachricht mit den meisten Nullen gewinnt.

Stimmt. Aber der andere Controller landet auf einen Bit Error und 
schiesst den Rest vom Frame mit einem sehr dominanten Error Frame ab. 
Ergebnis: Beide haben verloren.

von Gast (Gast)


Lesenswert?

Generell sollte man dafür sorgen, dass nur ein Knoten eine bestimmte ID 
verwendet (es gibt bestimmt sinnvolle Ausnahmen). Und gerade ein 
Anfänger sollte das einhalten.

Just my opinion...

von crazy horse (Gast)


Lesenswert?

es gibt für mich keinen einzigen ersichtlichen Grund, dass mehrere 
Sender die gleiche ID verwenden. Das soll heissen: kein Vorteil, 
vorprogrammierte Nachteile.

von Rolf Magnus (Gast)


Lesenswert?

>> Basiert das selbe, nur mit gleicher ID, aber unterschiedlichen
>> Daten, gilt: Der "0" Pegel ist dominant auf dem Bus. Das
>> bedeutet simple: Die Nachricht mit den meisten Nullen gewinnt.
>
> Stimmt.

Eigentlich nicht. Da wo der eine 1 hat, kann der andere ja trotzdem eine 
0 haben.

> Aber der andere Controller landet auf einen Bit Error und
> schiesst den Rest vom Frame mit einem sehr dominanten Error Frame ab.
> Ergebnis: Beide haben verloren.

Das kommt noch dazu.

von Sven (Gast)


Lesenswert?

Nun, es ist grundsätzlich möglich mehrmals die gleiche ID zu vergeben, 
aber nicht empfehlenswert. Wenn der Fall eintritt, dass zwei identische 
Nachrichten zur exakt selben Zeit senden wollen, demzufolge die 
Arbitration nicht wirkt. Dann zählt der interne Fehlercounter der 
CANController hoch (oder runter?) Wird dieser Fehler ausgewerdet kann 
entsprechend gehandelt werden.

von willivonbienemaya (Gast)


Lesenswert?

>>> Basiert das selbe, nur mit gleicher ID, aber unterschiedlichen
>>> Daten, gilt: Der "0" Pegel ist dominant auf dem Bus. Das
>>> bedeutet simple: Die Nachricht mit den meisten Nullen gewinnt.
>>
>> Stimmt.
>>
>Eigentlich nicht. Da wo der eine 1 hat, kann der andere ja trotzdem eine
>0 haben.


es nützt ihm ja nichts eine 1 zu haben. Auf dem Bus wird die 0 zu sehen 
sein.
oder wie meinst du das?

von A.K. (Gast)


Lesenswert?

Michaels Methode ist die einer 1-Bit Übertragung. Wenn in genau einem 
einzigen Bit ein Unterschied, dann setzt sich der mit 0 durch (vom Error 
Frame abgesehen). Pech nur, wenn es zwei Bits sind und sich beim zweiten 
der andere durchsetzt.

Quintessenz: Wenn jemand es unbedingt probieren will - bitte. Da 
explodiert und qualmt nichts und es kommt auch nicht die CAN-Polizei. 
Aber wenn man mit CAN sinnvoll und zuverlässig arbeiten will, dann 
Finger weg davon.

von A.K. (Gast)


Lesenswert?

Apropos CAN-Polizei: Wenn der Hintergrund dieser Frage ist, dass man mit 
solchen Tricks in der Auto-Elektronik rumspielen will, dann könnte es 
schon etwas rechtlichen und finanziellen Ärger geben.

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.