Hallo zusammen, Ich habe einen CAN Bus mit idealerweise zwei Teilnehmern, von denen inital jedoch einer passiv am Bus ist. Er geht nur aktiv an den Bus wenn er ein entsprechendes Kommando via CAN mitliest. Das kann er aber wohl leider nicht empfangen solange neben dem einen aktiven Teilnehmer kein weiterer aktiver Teilnehmer am Bus ist. Im Moment behelfe ich mir mit einem CAN Dongle als dritten (bzw. initial zweiten aktiven) Busteilnehmer. Gibt es da nicht eine andere Möglichkeit? Das initial passive Gerät kann ich leider nicht verändern... Grüße Alec
Na dann lass doch deinen initial einzigen aktiven Teilnehmer solange senden, bis der initial zweite Teilnehmer aktiv ist. Dieser wird dem ersten dann schon sein Ack schicken. Ansonsten wird der erste halt bis in alle Ewigkeit senden. Allerdings ist das eine komische Konstruktion, die du da hast. Normalerweise besteht ein Bus immer mindestens aus zwei Teilnehmern, die aktiv sind. Warum ist der zweite passiv? Wenn es keine Nachrichten für ihn gibt, kann er das Telegramm doch trotzdem bestätigen, falls er es korrekt empfangen hat.
CAN Transceiver mit Sleep bzw wake-up Funktion nutzen. Ohne CAN Aktivitäten kann der Transceiver abgeschaltet werden. Bei CAN Aktivität schaltet er sich selbständig wieder ein.
Helmut -. schrieb: > Na dann lass doch deinen initial einzigen aktiven Teilnehmer > solange > senden, bis der initial zweite Teilnehmer aktiv ist. Dieser wird dem > ersten dann schon sein Ack schicken. Ansonsten wird der erste halt bis > in alle Ewigkeit senden. > Allerdings ist das eine komische Konstruktion, die du da hast. > Normalerweise besteht ein Bus immer mindestens aus zwei Teilnehmern, die > aktiv sind. Warum ist der zweite passiv? Wenn es keine Nachrichten für > ihn gibt, kann er das Telegramm doch trotzdem bestätigen, falls er es > korrekt empfangen hat. Das ist ja das Problem denke ich, es ist niemand da der ein Ack schickt. Dementsprechend setzt der Transceiver vom ersten, und zu der Zeit einzigen aktiven Teilnehmer das Paket, welches den zweiten Teilnehmer aktivieren könnte, wohl gar nicht erst vollständig auf den Bus. Zumindest kriege ich von dessen CAN Controller ne Fehlermeldung wenn ich es versuche.
Jürgen schrieb: > CAN Transceiver mit Sleep bzw wake-up Funktion nutzen. > Ohne CAN Aktivitäten kann der Transceiver abgeschaltet > werden. Bei CAN Aktivität schaltet er sich selbständig > wieder ein. Wie gesagt kann ich an dem anfang inaktiven Teilnehmer nichts ändern...
Alec T. schrieb: > Er geht nur aktiv an den Bus wenn > er ein entsprechendes Kommando via CAN mitliest. Ist sichergestellt, dass dieses Kommando als allererstes exklusiv auf den Bus gelegt wird? Falls vorher irgendetwas anderes gesendet wird würde sich der Bus schon blockieren, da genau diese andere,Message endlos gesendet würde.
Alec T. schrieb: > Das ist ja das Problem denke ich, es ist niemand da der ein Ack schickt. > Dementsprechend setzt der Transceiver vom ersten, und zu der Zeit > einzigen aktiven Teilnehmer das Paket, welches den zweiten Teilnehmer > aktivieren könnte, wohl gar nicht erst vollständig auf den Bus. > Zumindest kriege ich von dessen CAN Controller ne Fehlermeldung wenn ich > es versuche. Also wenn nur ein Teilnehmer am Bus hängt, der natürlich korrekt terminiert sein muss, wird das Telegramm solange gesendet, bis es bestätigt wird und kein Errorframe kommt. Das muss natürlich das sein, das deinen anderen Controller aufweckt. Sonst kann dein Konstrukt nicht funktionieren!
Alec T. schrieb: > Gibt es da nicht eine andere Möglichkeit? Nö. Wenn der 2. Teilnehmer so vergurkt programmiert ist, brauchst Du für das ACK einen 3. Ohne ACK wird immer ein Errorframe draus.
Danke @Helmut und @Harald. Das war der richtige Hinweis. Da war noch ein anderer Frame zuvor im weg. Wenn man aufpasst das nur der richtige Frame dem Controller übergeben wird und nichts sonst bis das andere Device aktiv ist funktioniert alles :)
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.