CAN: Erkennung BusOff eines Teilnehmers

#1735491
Lesenswert?

Hallo zusammen,
ich habe ein CAN-Netzwerk für eine Gebäudeanwendung am laufen, welches 
aus folgenden Komponenten besteht:

Hauptprozessorplatine mit CAN-Schnittstelle, einmal vorhanden
Infineon XE167.

Stockwerksknoten, einmal pro Etage vorhanden (maximal 64 Stück!)Infineon 
XC888.

Im Wesentlichen werden auf dem BusEin-Ausgangszustände bzw. Seonsordaten 
zwischen Hauptprozessor und den Stockwerksnoten übertragen.
Jeder Stockwerksknoten enthält einen DIP-Schalter, über den die Etage 
eingestellt wird. Aus der Schalterstellung werden die Identifier der 
Nachrichtenobjekte für den jweiligen Knoten generiert.

Das Ganze läuft fehlerfrei und befindet sich derzeit in der Testphase.

Jetzt kann folgender Fall auftreten: Der Anwender stellt an mehreren 
Knoten versehentlich dieselbe Etage ein, was dazu führt, daß mehrere 
CAN-Knoten mit den selben Identifieren arbeiten.
Sofern die Knoten zeitgleich senden, laufen die Transmit-Errorcounter 
hoch und schlimmstenfalls nimmt einer bzw. mehrere der betroffenen 
Knoten den Zustand "Bus Off" ein.

Die Knoten erkennen das Vorhandensein von doppelten Identifieren in dem 
Moment, wo sie eine Nachricht auf dem Bus emfpangen, die nur von ihnen 
selbst gesendet werden kann und melden dies an den Master, sodaß der 
Benutzer eine entsprechende Meldung erhält.

Was mich aber interessiert:
Muß eine BusOff-Recovery Sequenz eingebaut werden und, falls ja, wie 
sieht diese aus ?

Das Problem ist, daß ein Zugriff auf das NodeControl Register bei diesem 
Prozessor nicht so einfach ist und sicherlich den Normalen Betrieb 
stört, sofern dieses zyklisch gelesen würde.

Gruß Holger
#1735509
Lesenswert?

Was nützt dir ein "BusOff-Recovery" wenn du immer noch die falsche ID 
hast?

CANopen vermeidet dieses mit dem LSS (Layer Setting Service), in dem die 
ID vom LSS-Master, beim BUS start, vergeben werden.

Anmerkung: BUSOFF (und die anderen Fehlerzustände)können (bei allen mir 
bekannten Controller) eien Interrupt auslösen.
Und was stört mehr, ein BusOff oder ein gelegentliches auslesen der 
Fehlerregister?

ciao Volker

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