CAN-Bus: identische Knoten gezielt ansteuern

Gast #4412719
Lesenswert?

Hallo,

ich habe vor, mehrere gleiche CAN-Bus Geräte gezielt anzusteuern. Im 
Moment plane ich mit 8-Bit DIP-Schaltern, um jedem Gerät eine eindeutige 
ID zuzuweisen, die man dann im 29/11 Bit Identifier verwursten kann.

Eine Lösung ohne diese DIP-Schalter wäre mir allerdings lieber. Nur 
fällt mir dazu leider nichts passendes ein.

Vlt. hat jemand von euch eine Idee, wie man das umsetzen könnte?

Bin für jeden Tipp dankbar!

Gruß Klaus
Gast #4412775
Lesenswert?

Oder machst Du einen logischen Eingang (z.B. mit Pull-Up) und einen 
Ausgang (z.B. Open Collector) an jedes Gerät und schleifst das von Gerät 
zu Gerät durch (1 Ader mehr). Durch eine Init-Sequenz einmalig oder nach 
jedem Power-Up kann man dann durchadressieren.
#4412959
Lesenswert?

Ich würde da einfach jedem µC einen eigenen Identifier spendieren den du 
im EEPROM speicherst. Wenns ein AVR ist und du in ASM programmierst 
könnte das so aussehen.
1
.eseg
2
Mein_Name: .db 0b00000111, 0b10011001
3
Meine_Funktionen: .db 0b11110000

Wenn dann ein Knoten seinen Namen empfängt kann er entsprechend 
verzweigen und andere Dinge erledigen. z.B. im EEPROM seinen Namen 
ändern oder Funktionen aktivieren die noch nicht freigegeben sind oder 
sogar in einen Bootloader verzweigen so das du Ihn per CAN komplett neu 
füttern kannst.
#4413283
Lesenswert?

Hallo,

bleibt die Frage, die dann immer wieder auftaucht: Inwieweit müssen die 
Knoten voneinander später unterschieden werden können - die dynamische 
Adresszuweisung hat nämlich den Nachteil, dass man die physikalische 
Zuordnung so nicht zwangsweise hinbekommt.

Und dass die physikalische Zuordnung bei identischen Knoten egal ist, 
sollte eher die extreme Ausnahme sein - mir fällt zumindest kein 
sinnvolles Szenario ein, bei dem die Adressen dann unterschiedlich sein 
müssen. Eine echt dynamische Adresszuweisung macht nur bei 
unterscheidbaren Knoten Sinn.

Damit muss man aber doch wieder eine Art Zuordnung schaffen. Entweder 
hartverdrahtet (wie oben mit Mikroschaltern, Widerstand, Daisy-Chaining) 
oder per Konfiguration; jedes Gerät hört am Anfang auf die gleiche 
Adresse, die in der Einbauphase (über den Bus) umkonfiguriert wird. Die 
Knoten werden dann entsprechend nacheinander eingebaut und konfiguriert, 
die neue Adresse dann statisch abgespeichert (z.B. in ein EEProm). Wird 
so z.B. in den gängigen Haus-Bus-Systemen gemacht.

Schöne Grüße,
Martin
#4413420
Lesenswert?

Hallo,

es gibt verschiedene Network Management Methoden, die die Adressen 
dynamisch vergeben; allen gemein (damit auch der J1939) ist allerdings, 
dass nicht zwei gleiche Knoten an den Bus gehen dürfen (J1939 z.B. löst 
Adressen-Konflikte durch den 64-Bit Device Name, der mit der höheren 
Priorität gewinnt). Damit sind sie für den beschriebenen Anwendungsfall 
(mehrere gleiche CAN-Knoten) nicht direkt anwendbar.

Und ob ich jetzt den Device-Namen oder direkt die Adresse konfigurierbar 
mache, dürfte für die Anwendung des Themenerstellers egal sein. Für die 
Umfelder, in denen J1939 angewendet wird, macht es allerdings Sinn, dass 
es reicht, ein "Motorsteuergerät" und ein "Bremssteuergerät" zusammen an 
einen Bus hängen zu können, ohne sie auf eine spezielle 
Fahrzeugkonfiguration (mit zusätzlich "Fensterhebersteuergerät") 
programmieren zu müssen.

Schöne Grüße,
Martin

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