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


von Haareraufer (Gast)


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)


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)


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)


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)


Lesenswert?

Terminatoren vergessen/falsch ?

Timing falsch konfiguriert?

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.