Bus load = Used capacity / Max capacity. In practice this means how much of the possible bandwidth that was used over a certain period of time.
Assuming standard identifier, a CAN frame consists of:
- 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 19 bits worst case.
- 3 bit delimiter, ack etc.
- 7 bit end of frame
- 3 bit intermission field after frame. You need to count these for the purpose of bus load.
So the amount of bits is variable depending on how much data there is and also on how many stuffing bits you end up with. Ignoring stuffing, you have an overhead of 47 bits/frame. The maximum frame size with 8 bit data with worst-case stuffing is something like 47+64+19=130.
Lets say you use 250kbps and measure bus load over 10ms intervals. The theoretical maximum amount of bits is then 10ms / (1/250kbps) = 2500 bits. But this is of course not necessarily divisible by full CAN frames.
If you send 10 frames with 250kbps during 10ms, each frame being 11 bit identifier, no data and no stuffing, then you end up with 47*10 = 470 bits, out of the theoretical maximum 2500. 470/2500 = 18.8% bus load.
Whereas 10 of my standard id rough worst-case 130 bits/frame, would give 1300/2500 = 52% bus load.
In practice, tools that measure bus load just clock the time after the end of each intermission field, until the next dominant start bit of another frame appears, then sum all such time periods.