Kollision bei CAN?

Im Rahmen meiner Diplomarbeit, hab ich eine Applikation zu schreiben, die sich mit mehreren CAN-Controllern unterhält. Diese haben die Eigenschaft, dass sie auf eine Nachricht mit dem Identifier 0x700 alle mit einer Nachricht mit dem Identifier 0x780 reagieren (auf die Firmware dieser Geräte habe ich keinen Einfluss). Das geschieht natürlich zeitgleich. Seltsamerweise funktioniert das. Müsste nicht eigentlich die Arbitrierung versagen, wenn mehrere Teilnehmer gleichzeitig unter gleichem Identifier senden? Ich habe in der Literatur nichts darüber gefunden was geschieht wenn zwei TN unter gleicher ID senden. Muss man solche Ereignisse einfach vermeiden, oder wurden bei CAN auch dafür Vorkehrungen getroffen.

Danke, Steffen

Reply to
steffenweissbach
Loading thread data ...

snipped-for-privacy@web.de schrieb im Beitrag ...

Das ist selbstverstaendlich verboten.

Egal, muss geaendert werden.

Nicht ganz (offenbar kein phasengleicher Takt)

Nicht wirklich. Da ein CAN-Sender detektiert, ob jemand anders auf der Leitung eine Mikrosekunde vorher sendet, unterlaesst er sein eigenes Telegramm, aber *irgendwann* liegen beide Takte zeitgleich und dann knallts.

Ebent.

Ja.

Offenbar interessiert es niemanden, welche Vorkehrungen getroffen wurden (naemlich die verschiedenen IDs) weil Vorgaben vom Hersteller aus Bequemlichkeit ignoriert werden. Da kann dann das bester Verfahren nichjts dran machen.

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
 Click to see the full signature
Reply to
MaWin

snipped-for-privacy@web.de schrieb:

Ergänzend zu den Antworten von MaWin:

Es könnte vielleicht sein, daß dieses Telegramm nur für die Konfiguration verwendet werden soll, wenn genau einer dieser Teilnehmer z.B. mit einem Programmiergerät verbunden ist. Dann sind solche "Broadcasts" ggf. sinnvoll, da man die Teilnehmeradresse u.U. nicht kennt.

Im normalen Betrieb sind Broadcasts zu vermeiden, die Antworten mit identischen IDs verursachen. Bei CANopen z.B. gibt es auch Broadcasts, aber die Antworten der Teilnehmer enthalten schon in der ID deren Teilnehmernummer und können damit arbitriert werden.

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
 Click to see the full signature
Reply to
Tilmann Reh

Herzlichen Dank erstmal, für die schnelle Antwort. Manchmal ist man unsicher, ob man richtig dedacht hat.

Kann ich mich dabei nur auf den logischen Menschenverstand berufen, oder kann man sowas auch irgendwo nachlesen ? (wegen Diplomarbeit..)

Reply to
steffenweissbach

schrieb im Newsbeitrag news: snipped-for-privacy@posting.google.com...

Die ID hat ja nur den einen Sinn, die einzelnen Kontroller zu unterscheiden. Es sollte also vermieden werden, dass sich verschiedene Teilnehmer mit der selben ID melden.

Senden die Module alle den Selben Datensatz? Wenn sie natürlich alle absolut zeitgleich genau die gleichen Werte senden, bemerkt keiner, dass mehrere Teilnehmer am Bus hängen. Der CAN Kontroller schreibt seine Daten auf den Bus und horcht diesen gleichzeitig ab. Er erkennt erst eine Kollision, wenn etwas anderes vom Bus gelesen wird, als geschrieben wurde. Schreiben alle Module das Selbe ist dies keine Kollision.

Wahrscheinlicher ist aber, dass die Module nicht genau zeitgleich mit dem senden beginnen. Dasjenige welches später dran ist, erkennt dass der Bus schon belegt ist und wartet, versucht also später nochmals zu senden. In diesem Fall würdest du von mehreren das Telegramm empfangen.

Auch eine Möglichkeit wäre, dass mehrere die Übertragung relativ zeitgleich starten, aber mit etwas unterschiedlicher Bitrate senden. Früher oder später tritt dann eine Überlappung auf. Mindestens ein Kontroller erkennt den Fehler und überschreibt die Daten durch eine Error Meldung. Alle stoppen daraufhin die Aussendung und versuchen es später wieder.

Dass es also funktioniert ist nichts besonderes. Nur ist nicht genau abzuschätzen, welcher der obigen Fälle eintritt (vorausgesetzt alle senden das Selbe). Senden die Kontroller verschiedene Telegramme mit verschiedener ID sollten früher oder später alle ankommen.

Sinn macht das ganze natürlich nicht, da du die Meldungen nicht zuordnen kannst.

Infos zum CAN:

formatting link

CAN Spec. ursprünglich von Bosch. Schau dort mal nach Infos.

1999 gab es mal eine dreiteilige Serie über CAN in Elektor. Falls du keinen Zugriff darauf hast, kann ich dir gerne einen Scan mailen.

Viele Grüße Wolfgang Berger

Reply to
Wolfgang Berger

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.