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!
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.