CAN-Statistik-Zähler

Aus CANopen-Lift
Version vom 14. September 2010, 08:05 Uhr von Hba (Diskussion | Beiträge) (Alle Zähler sind 'ro')
Zur Navigation springen Zur Suche springen

Zur Erfassung von statistischen Werten der CAN-Bus-Verbindung werden folgende Objekte vorgeschlagen:

Bus Status

Der Zustand des CAN-Busses wird in vier Status aufgeteilt (in Klammern Receive error counter - REC und Transmit error counter - TEC):

  • Error active (REC < 96 und TEC < 96)
  • Warning (Error active, REC >= 96 oder TEC >= 96)
  • Error passive
  • Bus off

Für jeden Wechsel von Error active nach Warning, von Warning nach Error passive und Error passive nach Bus off gibt es einen Zähler.

Objekt 0x5800, Record: CAN status counter

Subindex 0, UNSIGNED8,  rw:  Number of objects (r), 
                             write zero: clear status counter, 
                             write one: clear status/rx/tx counter
Subindex 1, UNSIGNED16, ro:  Warning counter (Anzahl Zustandswechsel nach Warning)
Subindex 2, UNSIGNED16, ro:  Error counter (Anzahl Zustandswechsel von Error active nach Error passive)
Subindex 3, UNSIGNED16, ro:  Bus off counter (Anzahl Zustandswechsel von Error passive nach Bus off)

Empfangs-Zähler

Für den Empfang gibt es mehrere Zähler. Der Rx message counter zählt alle erfolgreich empfangenen Nachrichten (wird durch den CAN-Controller signalisiert). Wird eine Nachricht im CAN-Controller durch eine Neue überschrieben und geht dadurch verloren, so wird der Rx overrun counter erhöht. Kommt eine Empfangs-Warteschlange (FIFO) zum Einsatz und kann dort die Nachricht nicht abgelegt werden, so wird der Rx overflow counter erhöht. Im Rx max. counter kann die max. Anzahl Nachrichten in der Empfangs-Warteschlange erfaßt werden (maximaler Füllstand). Rx fifo size ist die Größe der Empfangs-Warteschlange.

Objekt 0x5801, Record: CAN rx counter

Subindex 0, UNSIGNED8,  rw:  Number of objects (r), 
                             write zero: clear rx counter, 
Subindex 1, UNSIGNED32, ro:  Rx message counter (Anzahl empfangener gültiger Nachrichten)
Subindex 2, UNSIGNED16, ro:  Rx overrun counter (Anzahl verlorener Nachrichten durch Hardware-Überlauf)
Subindex 3, UNSIGNED16, ro:  Rx overflow counter (Anzahl verlorener Nachrichten durch Software-Überlauf)
Subindex 4, UNSIGNED16, ro:  Rx max. counter (Max. Anzahl Nachrichten in der Empfangs-Warteschlange, max. Füllstand)
Subindex 5, UNSIGNED16, ro:  Rx fifo size (Größe der Empfangs-Warteschlange)

Sende-Zähler

Für das Senden gibt es mehrere Zähler. Der Tx message counter zählt alle erfogreich gesendeten Nachrichten (wird durch den CAN-Controller signalisiert). Kommt eine Sende-Warteschlange (FIFO) zum Einsatz und ist diese voll, so wird das Ereignis im Rx overflow counter gezählt. Geht dadurch eine Nachricht verloren, so wird der Tx overrun counter erhöht. Im Tx max. counter kann die max. Anzahl Nachrichten in der Sende-Warteschlange erfaßt werden (maximaler Füllstand). Tx fifo size ist die Größe der Sende-Warteschlange.

Objekt 0x5802, Record: CAN tx counter

Subindex 0, UNSIGNED8,  rw:  Number of objects (r), 
                             write zero: clear tx counter, 
Subindex 1, UNSIGNED32, ro:  Tx message counter (Anzahl erfolgreich gesendeter Nachrichten)
Subindex 2, UNSIGNED16, ro:  Tx overrun counter (Anzahl verlorener Nachrichten durch Hardware/Software-Überlauf)
Subindex 3, UNSIGNED16, ro:  Tx overflow counter (Anzahl Ereignisse Software-Überlauf ohne Verlust der Nachricht)
Subindex 4, UNSIGNED16, ro:  Tx max counter (Max. Anzahl Nachrichten in der Sende-Warteschlange, max. Füllstand)
Subindex 5, UNSIGNED16, ro:  Tx fifo size (Größe der Sende-Warteschlange)