CAN-Bus-Qualität
Ziel
Über Bussysteme findet die Kommunikation zwischen einzelnen Geräten statt. Diese Kommunikation kann gestört sein, wenn z. B. die Busleitung nicht richtig terminiert ist, die Leitung falsch verlegt ist oder sich in der Nähe ein stark störendes Gerät befindet. Ist die Kommunikation gestört, können Signale nicht in Echtzeit übertragen werden.
Dies kann dazu führen, dass Nachrichten verloren gehen und ein Ruf nicht angenommen wird oder der Aufzug das Signal eines Schlüsselschalters nicht bemerkt.
Meist lassen sich solche Fehler sehr schwer finden, da sie nur sporadisch auftreten können.
Um dem Monteur bei der Errichtung bzw. Fehlersuche ein einfaches Mittel an die Hand zu geben, soll die CAN-Bus-Qualität ermittelt und in leicht verständlicher Weise ausgegeben werden. Sollte bei einer Anlage ein Netzwerk gestört sein, ist damit die Ursache schnell gefunden und behoben.
Grundlagen
Auswertungen der Statusregister der CAN-Controller liefern wertvolle Informationen über die CAN-Bus Qualität. Die meisten CAN-Controller stellen folgende Informationen zur Verfügung:
- WARNING
- ERROR
- BUS-OFF
Um ein Gefühl der CAN-Bus Qualität über längere Zeit zu erhalten, werden die Statusinformationen wie folgt verarbeitet:
Für jeden Zustand 'WARNING', 'ERROR' und 'BUS-OFF' wird ein eigener Zähler erstellt. Jede Minute wird der kritischste Zustand ermittelt, der innerhalb dieses Minutenfensters auftrat. Dabei ist ‚BUS-OFF‘ der kritischste, ‚WARNING‘ der am wenigsten kritischste Zustand. Der Zähler des kritischsten Zustands wird um eins erhöht.
Dies ergibt zum Beispiel folgendes Bild:
WARNING | 12 |
ERROR | 3 |
BUS-OFF | 1 |
Zur Interpretation dieser Informationen: während einem Minutenfenster trat der kritischste Zustand 'BUS-OFF' auf. Der Zustand 'ERROR' herrschte während 3 Minutenfenstern und der Status 'WARNING' wurde während 12 Minutenfenstern gezählt.
Alternativ zu dieser 'Minutenfenster-Auswertung' könnte auch jeder Statuswechsel geloggt werden. Der Nachteil dabei ist, dass bei dieser Auswertung kein Gefühl für die Zeitdauer von Störungen vorliegt.
Um die Auswertung der CAN-Bus Qualität zu normieren, müssen in der CiA-417 Objekte für diese Statuszähler definiert werden. Zudem muss definiert werden, welcher Datentyp für die Zähler verwendet wird (1 Byte ergibt eine Aufzeichnungstiefe von etwas über 4 Stunden). Zähler überlaufen nicht, sondern verharren auf dem Maximalwert. Sie können per SDO zurückgesetzt werden.
Vorschlag zur Realisierung
Das Gerät liefert kompakte Rohdaten über die Busqualität, die mit etwas Hintergrundwissen direkt interpretiert werden können. Idealerweise bietet das Konfigurationswerkzeug eine graphisch aufbereitete Darstellung (siehe oben).
Schnittstelle
Das optionale Objekt 0x6031 (Bus Quality) kann nur gelesen werden und enthält ein Histogramm der vom Gerät festgestellten Busqualitäten.
Objekt 0x6031, Subindex 1, UNSIGNED32, Minutes (die letzten Minuten) Subindex 2, UNSIGNED32, Minutes (die vorletzten Minuten) Subindex 3, UNSIGNED32, Hours (die letzten Stunden) Subindex 4, UNSIGNED32, Hours (die vorletzten Stunden) Subindex 5, UNSIGNED32, Weeks (die letzten Wochen)
Das Alter der Werte ist mit den Subindizes aufsteigend. Subindex 1 enthält den aktuellsten Wert, Subindex 5 den ältesten. Die 4 Bytes des UNSIGNED32 haben folgende Bedeutung:
Byte 0, LSB, Zähler Summe Byte 1, Zähler Warning Byte 2, Zähler Error Byte 3, MSB, Zähler Bus-Off
Die Zähler haben je nach Subindex unterschiedliche Gewichtung.
Das optionale Objekt 0x6032 kann nur geschrieben werden und dient vorläufig ausschliesslich zum Löschen des Histogramms.
Objekt 0x6032, VISIBLE_STRING, Bus Quality Command
Durch Schreiben von "clr" auf das Objekt 0x6032 werden alle Zähler des Objekts 0x6031 auf 0 gesetzt.
Funktion
Während je einer Minute wird die schlechteste Busqualität ermittelt. Liegt das Ergebnis vor, wird in 0x6031 Subindex 1 der entsprechende Zähler sowie die Summe inkrementiert. Rechtzeitig vor einen Überlauf der Zähler wird der Inhalt aller Zähler auf den folgenden Subindex übertragen und danach auf 0 gesetzt. Beim Übertrag auf einen Subindex mit höherer Gewichtung muss sichergestellt werden, dass jeder Zähler, der nicht 0 aufweist, den entsprechenden Zähler im nächsten Subindex mindestens um 1 inkrementiert. Der Übertrag aus Subindex 1 und 2 findet nach 4 Stunden statt. Der Übertrag aus Subindex 3 und 4 findet nach einer Woche statt. Die Zähler von Subindex 5 laufen nicht über, sondern stehen bei 255 an.
Persistenz
Das Objekt 0x6031 kann optional so implementiert werden, dass der Zustand den Netzausfall überdauert.