CAN-Statistik-Zähler

Aus CANopen-Lift
Version vom 13. September 2010, 12:17 Uhr von Hba (Diskussion | Beiträge) (Seite neu angelegt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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, rw:  Warning counter (Anzahl Zustandswechsel nach Warning)
Subindex 2, UNSIGNED16, rw:  Error counter (Anzahl Zustandswechsel von Error active nach Error passive)
Subindex 3, UNSIGNED16, rw:  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 counter zählt alle empfangenen Nachrichten (die durch den CAN-Controller signalisiert werden). 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 Anzahl max. Nachrichten zu einem beliebigen Zeitpunt in der Empfangs-Warteschlange erfaßt werden. 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, rw:  Rx counter (Anzahl empfangener gültiger Nachrichten)
Subindex 2, UNSIGNED16, rw:  Rx overrun counter (Anzahl verlorener Nachrichten durch Hardware-Überlauf)
Subindex 3, UNSIGNED16, rw:  Rx overflow counter (Anzahl verlorener Nachrichten durch Software-Überlauf)
Subindex 4, UNSIGNED16, rw:  Rx max. counter (Anzahl max. Nachrichten in der Empfangs-Warteschlange)
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 counter zählt alle gesendeten Nachrichten (die durch den CAN-Controller signalisiert werden). 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 Anzahl max. Nachrichten zu einem beliebigen Zeitpunt in der Sende-Warteschlange erfaßt werden. 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, rw:  Tx counter (Anzahl gesendeter Nachrichten)
Subindex 2, UNSIGNED16, rw:  Tx overrun counter (Anzahl verlorener Nachrichten durch Hardware/Software-Überlauf)
Subindex 3, UNSIGNED16, rw:  Tx overflow counter (Anzahl Ereignisse Software-Überlauf)
Subindex 4, UNSIGNED16, rw:  Tx max counter (Anzahl max. Nachrichten in der Sende-Warteschlange)
Subindex 5, UNSIGNED16, ro:  Tx fifo size (Größe der Sende-Warteschlange)