Buffer-Größe in Abhängigkeit der Zykluszeit

Es gilt abzuschätzen, wie groß der Buffer bzw. wie schnell die Task-Zeit sein muss. Die folgende Tabelle hilft dies im Vorfeld fest zu legen.

Die CCAT-CAN-Master besitzen einen Speicher für 512 Messages, die EL6751 für 150 Messages (RxMessages). Sollten die Daten nicht schnell genug aus dem Speicher geholt werden, gehen diese verloren. Es gibt keinen Hinweis, daher sollte oder muss man den Worst Case vorher abschätzen, bzw. die Variable NoOfRxMessages sollte möglichst kleiner als der maximale Buffer-Wert sein. Ist dieser immer oder fast in jeden Zyklus auf dem maximalen Wert, dann ist das ein Hinweis, dass mehr Daten empfangen werden als pro Zyklus erfasst werden können. Abhilfe: Verringern Sie die Task-Zykluszeit oder erhöhen sie den Buffer der CAN-Queue.

Beispiel

Ein CAN-Telegramm mit 11 Bit Identifier und 8 Byte Nutzdaten braucht bei 500 Kbit/s ca. 260 µs. Geht man im Worst Case von 100% Buslast aus, wären es bei 1 ms maximal 3 Telegramme. D.h. ein Buffer von maximal 4 wäre in diesem Fall ausreichend. Verwendet man statt 1 ms eine Taskzeit von 5 ms sollten der Buffer 20 (5000 µs / 260 µs) oder größer sein. Hierbei ist zu berücksichtigen, dass bei dieser Betrachtung nur die Daten in einer Richtung berücksichtigt sind und die CAN Daten immer 8 Byte haben. Da in der Regel nicht von 100% Buslast auszugehen ist, kann man auch die Variable NoOfRxMessages auswerten und schauen ob diese in den meisten Fällen unter der Maximalanzahl der angelegten Buffer liegt. Ist NoOfRxMessages oft beim maximalen Wert, sollte die Task-Zeit verkleinert oder der Buffer vergrößert werden.

Worst Case

Das CAN-Interface ist aber so ausgelegt das man in der Regel die Daten immer schneller abholen kann als das diese im Buffer auflaufen.

Beispiel

1 MBaud Datenlänge 0 bedeutet 50 µs pro CAN Message. Bei 1 ms Task-Zeit wären das
1000 µ / 50 µs = 20
D.h. auch in dieser extremen Worst-Case-Betrachtung wäre ein Buffer von 20 ausreichend um alle CAN-Telegramme zu empfangen.

Tabelle für die Telegrammlaufzeiten bei 11 Bit Ident [ms]1)

Bit rate
[kBit/s]

Datenlänge in Byte

0

1

2

3

4

5

6

7

8

50

1.09

1.28

1.47

1.66

1.86

2.05

2.24

2.34

2.62

125

0.44

0.51

0.59

0.67

0.74

0.82

0.90

0.97

1.05

250

0.22

0.26

0.29

0.33

0.37

0.41

0.45

0.49

0.52

500

0.11

0.13

0.15

0.17

0.19

0.21

0.22

0.24

0.26

1000

0.05

0.06

0.07

0.08

0.09

0.10

0.11

0.12

0.13

1) Daten von CIA