# CAN Bus Load Calculation

How can I calculate the bus load of my CAN bus based on frame sending intervals?

There can (only) be an estimative calculation based on some assumptions.

Regarding CAN bus load calculation, assuming standard identifier, CAN frame consist of below field.

- 1 bit start bit
- 11 bit identifier
- 1 bit RTR
- 6 bit control field
- 0 to 64 bit data field
- 15 bit CRC
- Bit stuffing is possible in the above, for every sequence of 5 consecutive bits of same level. Somewhere around 18 bits in the worst case.
- 3 bit delimiter, ack etc.
- 7 bit end of frame
- 3 bit intermission field after frame

So 1 CAN frame contains approximately 125 bit.

Given we are using 500 kBit/s bit rate:

bit time = 1 / bit rate = 1 / (500 * 1000) s = 2 * 10^{-6} s = 2 µs

This means 1 bit will take 2 µs to transfer on bus when using 500 kBit/s.

So the approximate time to transfer 1 frame is (2 µs/bit * 125 bit) = 250 µs.

The bus load for 1 message every 100 ms with 500 kBit/s can be calculated as below:

Given that every 100 ms one (1) message will be sent

In 100 ms the bus will be occupied for 250 µs.

So the bus load from these cyclic messages is

250 µs / 100 ms = (250 / (100*1000)) * 100 % = 25000 / 100000 % = 0.25 %

Let assume you have below multiple sending intervals on the bus as:

1 frame every 10 ms = 100 frames every 1000 ms

1 frame every 100 ms = 10 frames every 1000 ms

1 frame every 1000 ms = 1 frame every 1000 ms

This is in total 111 frames every 1000 ms

Total time on bus is 111 * 250 µs

Total time is 1000 ms = 1000 * 1000 µs

Bus load is ((111 * 250) / (1000 * 1000)) * 100 % = 2.775 %

This is just an estimative calculation based on some assumptions to get an overview. Please note that the CAN bus is not deterministic and bus load cannot be calculated exactly.

This calculation is not valid for CAN FD.

**2019-11-22**

**352**