Automatische Identifier Vergabe CAN-Bus

19/05/2010 - 21:31 von Arne | Report spam
Hallo NG,

ich möchte Teilnehmen an einem CAN-Bus eine eindeutige CAN-ID zuweisen, kennt hier jemand ein
erprobtes zuverlàssiges verfahren?

Nehmen wir einmal an ich habe bis zu 12 verschiedene Teilnehmer die über den CAN-Bus verbunden sind.
Ein logischer Master fragt von den Teilnehmern Daten ab, der Master vergibt den Geràten eindeutige
CAN-IDs.

Die unterschiedlichen Teilnehmer können beliebig an diesen Bus angesteckt und wieder entfernt
werden, auch gleichzeitig. Insgesamt gibt es sehr viel mehr als die 12 Steckplàtze für diese Geràte.
Aller Geràte verfügen über eine eindeutige 32Bit Seriennummer.

Es ist wichtig, das ich gezielt einzelne Teilnehmer ansprechen kann, eine Benutzer-erkennbare
Zuordnung zum Physikalischen Geràt ist nicht notwendig.

In dem Bus-System sind neben den 12 Steckplàtzen noch weitere Teilnehmer, die mit statischen IDs
arbeiten.

Bisherige Idee:
Master sendet ein Broadcast worauf alle Teilnehmer ohne ID mit Ihrer Seriennummer auf eine
definierten Sammel-ID antworten. Antworten zwei Teinehmer gleichzeitig steigen sie mit einem
Errorframe aus und wiederholen die Antwort nach einer Zufallszeit.

Kennt der Master die Seriennummern, kann er mit einen Broadcast mit Seriennummer und neuer CAN-ID
als Dateninhalt einzelne Teilnehmer konfigurieren.

Kennt jemand ein besseres Verfahren, in dem man evtl. ohne Errorframe auskommt?

Gruß
Arne
 

Lesen sie die antworten

#1 Dirk Ruth
19/05/2010 - 22:33 | Warnen spam
Arneschrieb:
"
Hallo NG,

ich möchte Teilnehmen an einem CAN-Bus eine eindeutige CAN-ID zuweisen, kennt hier jemand ein
erprobtes zuverlàssiges verfahren?

Nehmen wir einmal an ich habe bis zu 12 verschiedene Teilnehmer die über den CAN-Bus verbunden sind.
Ein logischer Master fragt von den Teilnehmern Daten ab, der Master vergibt den Geràten eindeutige
CAN-IDs.

Die unterschiedlichen Teilnehmer können beliebig an diesen Bus angesteckt und wieder entfernt
werden, auch gleichzeitig. Insgesamt gibt es sehr viel mehr als die 12 Steckplàtze für diese Geràte.
Aller Geràte verfügen über eine eindeutige 32Bit Seriennummer.

Es ist wichtig, das ich gezielt einzelne Teilnehmer ansprechen kann, eine Benutzer-erkennbare
Zuordnung zum Physikalischen Geràt ist nicht notwendig.

In dem Bus-System sind neben den 12 Steckplàtzen noch weitere Teilnehmer, die mit statischen IDs
arbeiten.

Bisherige Idee:
Master sendet ein Broadcast worauf alle Teilnehmer ohne ID mit Ihrer Seriennummer auf eine
definierten Sammel-ID antworten. Antworten zwei Teinehmer gleichzeitig steigen sie mit einem
Errorframe aus und wiederholen die Antwort nach einer Zufallszeit.

Kennt der Master die Seriennummern, kann er mit einen Broadcast mit Seriennummer und neuer CAN-ID
als Dateninhalt einzelne Teilnehmer konfigurieren.

Kennt jemand ein besseres Verfahren, in dem man evtl. ohne Errorframe auskommt?





Was genau stört dich denn am Errorframe? Den sieht doch nur der
jeweilige Slave und ist doch erwünschtes Verhalten auf dem CAN-Bus.
Ich würde auch die Zufallszahl weglassen, dann sieht der Master alle
Slaves sofort in der Reihenfolge ihrer Seriennummern. Besser kann man
es doch nicht haben. Ich kenne jetzt deine Slaves(Controller) nicht,
aber die besseren sollten das wiederholende Senden nach einem Error
automatisch ausführen, bis erfolgreich gesendet wurde. Springt halt
mal kurz der Errorcounter im Slave hoch, aber im Idealfall merkst du
davon nichts. M.W. wechselt der Error-State im Slave erst bei 128
Errors oder man konnte es konfigurieren o.s.à.

Dirk

Ähnliche fragen