CAN-Statistik-Zähler
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)