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
Oder eben direkt im uC eine programmierbare ID im Flash...
Es gibt von Microchip z.B. den 24AA025E48 mit einer einzigartigen MAC.
Wenn interne IDs nicht zulässig sind: Wieviele verschiedene IDs? Eine pinsparende Lösung wäre Widerstandscodierung über A/D-Pin.
Manche auf Can aufgesetzte Protokolle benutzen dynamiche Addressierung. Vielleicht schaust du dir dort was ab und machst es ähnlich.
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.
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.
Danke für die vielen Hinweise! NurEinGast schrieb: > Manche auf Can aufgesetzte Protokolle benutzen dynamiche Addressierung. > Vielleicht schaust du dir dort was ab und machst es ähnlich. Das ist der Gedanke, der mir gefehlt hat. Danke! Gruß Klaus
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
Servus, NurEinGast schrieb: > Manche auf Can aufgesetzte Protokolle benutzen dynamiche Addressierung. > Vielleicht schaust du dir dort was ab und machst es ähnlich. Mir fällt jetzt gerade nur J1939 - "Address Claiming" ein. Gibts sowas auch bei UDS/CCP(XCP) oder andere? Gruß
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
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.