Forum: Mikrocontroller und Digitale Elektronik CAN: Erkennung BusOff eines Teilnehmers


von Holger B. (rst-el)


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

von Volker Z. (vza)


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

von Peter (Gast)


Lesenswert?

Hallo,

ich habe eine Frage,
wie kann man erkennen dass der Bus schläft?

wäre super wenn jemand einen Hinweis geben könnte.

Gruß Peter

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
Noch kein Account? Hier anmelden.