Einfachste Lösung für initialen "Start" des CAN Bus

OP #6696170
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
#6696186
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.
Gast #6696189
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.
OP #6696482
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.
Gast #6696494
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.
#6696517
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!
OP #6697261
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 :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.