www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Frage


Autor: Peda (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: EFA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

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

Autor: willivonbienemaya (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Obelix (Gast)
Datum:

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

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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/Ca...

Autor: willivonbienemaya (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: crazy horse (Gast)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: willivonbienemaya (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.