2 viruelle CAN-Knoten in physikalischen CAN-Knoten

Gast #3542875
Lesenswert?

Hallo,

ich habe mal eine Frage zu einer Überlegung bezüglich CAN.

Wenn ich ein Embedded Device entwickeln wöllte, dass nach aussen eine 
CAN-Schnittstelle etwa über einen Sub-D 9 Stecker anbieten würde und ich 
in dem Embedded Device folgende (senden und empfa zwei Applikationen 
hätte:

- Applikation A: Muss alle Botschaften in einer Textdatei tracen
- Applikation B: Muss über vielleicht eine Hand voll an Botschafts-IDs 
ein höheres Protokoll abhandeln (senden und empfangen) und ignoriert die 
restlichen Botschaften

Wäre es sinnvoll dies per Hardware so zu lösen, dass sich hinter dem 
Sub-D 9 Stecker zwei CAN-Controller befinden und ich in meinem Embedded 
Device quasi zwei (virtuelle?) CAN-Knoten realisiere? Die Applikation B 
könnte dann ihren CAN-Controller mit einem Botschaftsfilter 
initialisieren und es könnte je ein Thread auf einem CAN-Controller 
rumrödeln...

Oder sollte ich das über die Software lösen?

Grüße
Gast #3542887
Lesenswert?

Wenn du eh alle Nachrichten in Applikation A empfängst ist ein zweiter 
Controller doch quatsch. Wenn die gewünschten Nachrichten in Applikation 
A empfangen wurden setzt du einfach ein Flag für Applikation B. Fertig! 
Oder habe ich was übersehen?
Gast #3542896
Lesenswert?

Ne das siehst du schon richtig.

Ich hätte halt dadurch erreicht, dass beide Applikationen unabhängig 
voneinander laufen, ich keine Threads synchronisieren muss und ich nicht 
jede Botschaft daraufhin überprüfen muss, ob sie eine von den wenigen 
ist, die für das Protokol verwendet wird...
Gast #3542897
Lesenswert?

Wenn du einen halbwegs leistungsfähigen Mikrocontroller hast (zB 
STM32F103 mit integriertem CAN-Controller) ist das einzig sinnvolle 
alles auf dem einen Controller zu machen. Dank Filter-Bänke ist das 
Unterscheiden der Nachrichten kein Problem.

Threads sind unnötig, dafür gibt's ISRs...
Gast #3543137
Lesenswert?

Hallo,

also ich würde die CAN Controller wohl extern anbinden müssen. Es würde 
ein x86 Prozessor verwendet werden, der keine CAN Controller integriert 
hat. Als Betriebssystem würde Windows Embedded Compact (7 / 2013) zum 
Einsatz kommen.

Ich würde dann wohl Win32 Threads, Semaphoren und Events verwenden...
(Firma: Wilhelm.Consulting) #3543141
Lesenswert?

Habe ich auf einem CortexM3, M4 und einem Core2 in Software gemacht... 
stellt bei halbwegs passender Implementierung keine Probleme dar.

Bedenke aber die Latenzen die Windows mit sich bringt...

Die HW filter brauchst du nicht.. die paar Packerl kann die CPU so auch 
locker durchforsten ;)

73

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren