Forum: Mikrocontroller und Digitale Elektronik CAN-Message kommt nicht überall an


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Haareraufer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wahrscheinlich habe ich eine spezielle Funktionsweise noch nicht ganz 
verstanden. Als CAN Analyzer habe ich den von Microchip.
Der Effekt der mich die Haare raufen lässt, ist folgender: mit einem 
Gerät sende ich eine Message auf den Bus, ein anderes Gerät soll diese 
Message verarbeiten. Diese Message wird vom Analyzer angezeigt. Sie 
kommt aber beim Gerät nicht an, bzw. wird nicht verarbeitet. Das ist mir 
aufgefallen, weil ich ihn von Modus "Normal" auf "listen only" 
umgeschaltet habe, er also sein Ack nicht senden kann. Dann geht es. Die 
Nachricht kommt an und wird verarbeitet. Soweit kein Problem, mit nur 
zwei Teilnehmern funktioniert es anscheinend. Mein Gedanke ist aber: 
Wenn ich mehr als zwei normale Teilnehmer am Bus angeschlossen habe, 
wird es wahrscheinlich wieder so sein, dass der erste, der die Message 
erhält, sein Ack sendet und die Nachricht von den langsameren 
Teilnehmern nicht erkannt wird, weil der Sender nur so oft sendet, bis 
einer sein Ack gesendet hat. Ich habe schon eine Abfrage geschrieben, 
welche den Erhalt der Message zurücksendet und den Sender erkennen 
lässt, dass die Message angekommen ist. Ich hatte ihn so oft senden 
lassen, bis die Nachricht akzeptiert wurde. Es wurden z.B. 67 Messages 
versendet, bis die Antwort kam. Bei mehreren Teilnehmern kann man das 
doch unmöglich so machen, oder doch? Wie wird dieses Problem 
üblicherweise gelöst?
Danke für jede Erleuchtung!

von Gerd E. (robberknight)


Bewertung
1 lesenswert
nicht lesenswert
Haareraufer schrieb:
> Es wurden z.B. 67 Messages
> versendet, bis die Antwort kam.

Da ist was faul, normal ist das nicht.

Häng doch mal ein Logic Analyzer oder Oszi an den RX-Ausgang des 
CAN-Transceivers von Deinem Empfänger-Gerät.

Siehst Du dort die korrekte Nachricht?

Wenn ja, dann ist das Problem vermutlich im Gerät oder dessen Software 
zu suchen.

Wenn nein, dann vermutlich bei der Verdrahtung des CAN oder der 
Transceiver ist kaputt oder falsch beschaltet.

von Haareraufer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich werde mich morgen nochmal damit auseinandersetzen. Vielleicht habe 
ich dann neue Ideen. Jetzt ist erstmal Feierabend. Danke für den Tip mit 
dem Transceiver, den werde ich mir nochmal vorknöpfen.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Haareraufer schrieb:
> mit nur
> zwei Teilnehmern funktioniert es anscheinend.

Hast Du denn auch GND mit verbunden?
Die CAN-Transceiver erlauben nur maximal +/-5V Störspannung zwischen den 
GND-Potentialen.

Haareraufer schrieb:
> wird es wahrscheinlich wieder so sein, dass der erste, der die Message
> erhält, sein Ack sendet und die Nachricht von den langsameren
> Teilnehmern nicht erkannt wird

Nein. Der Teilnehmer, der einen Fehler erkennt, sendet einen Errorframe, 
worauf auch der mit dem ACK die Nachricht verwirft.
Langsam und schnell gibt es nicht, alle müssen die gleiche Baudrate 
benutzen.
Eine Nachricht kann nur dann verloren gehen, wenn Du keine Pufferung 
eingerichtet hast und das nächste Paket eintrifft, bevor das vorherige 
ausgelesen wurde.

von NichtWichtig (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Terminatoren vergessen/falsch ?

Timing falsch konfiguriert?

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]
  • [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.