Carga del bus = Capacidad utilizada / Capacidad máxima. En la práctica, esto significa la cantidad de ancho de banda posible que se utilizó durante un determinado período de tiempo.
Suponiendo un identificador estándar, una trama CAN se compone de:
- 1 bit de inicio.
- Identificador de 11 bits
- 1 bit RTR
- Campo de control de 6 bits
- Campo de datos de 0 a 64 bits
- CRC de 15 bits
- El relleno de bits es posible en lo anterior, para cada secuencia de 5 bits consecutivos del mismo nivel. En el peor de los casos, alrededor de 19 bits.
- Delimitador de 3 bits, ack, etc.
- 7 bits al final de la trama
- Campo de intermisión de 3 bits después de la trama. Hay que contarlos a efectos de la carga del bus.
Por lo tanto, la cantidad de bits es variable en función de la cantidad de datos que haya y también de la cantidad de bits de relleno que haya. Ignorando el relleno, tienes una sobrecarga de 47 bits/trama. El tamaño máximo de la trama con datos de 8 bits con el peor de los casos es algo así como 47+64+19=130.
Digamos que usas 250kbps y mides la carga del bus en intervalos de 10ms. La cantidad máxima teórica de bits es entonces 10ms / (1/250kbps) = 2500 bits. Pero, por supuesto, esto no es necesariamente divisible por tramas CAN completas.
Si envías 10 tramas con 250kbps durante 10ms, siendo cada trama un identificador de 11 bits, sin datos y sin relleno, entonces terminas con 47*10 = 470 bits, del máximo teórico de 2500. 470/2500 = 18,8% de carga del bus.
Mientras que 10 de mi id estándar en el peor de los casos 130 bits/frama, daría 1300/2500 = 52% de carga del bus.
En la práctica, las herramientas que miden la carga del bus se limitan a cronometrar el tiempo tras el final de cada campo de intermisión, hasta que aparece el siguiente bit de inicio dominante de otra trama, y luego suman todos esos periodos de tiempo.