mikrocontroller.net

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


Autor: Holger B. (rst-el)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Volker Zabe (vza)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.