2 votos

¿Cómo se calcula la carga del bus CAN?

Tengo algunas preguntas sobre la carga del bus CAN

  1. ¿Existe alguna ecuación/fórmula derivada para calcular la carga del bus?

  2. Necesito transmitir las siguientes tramas (asumiendo un formato de trama estándar) a una tasa de baudios de 500 kbps en el bus

    5ms ----- 50 cuadros.

    10ms ----- 10 cuadros.

    100ms ---- 30 frmaes.

    Mensajes de eventos ---- 10 cuadros.

¿Cómo se calcula la carga del bus, alguien sabe ilustrar amablemente la misma?

  1. ¿Cuál es la carga máxima del bus CAN?

6voto

Neil Foley Puntos 1313

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.

2voto

Spike Puntos 304
  1. Según parece, la carga del autobús es un porcentaje.

    • carga del bus = #bytes enviados / velocidad

    • por ejemplo, 1000 bytes (a enviar en un segundo) * 8 (bits/byte / 500.000 (baudrate bps) * 100% = 1,6 %.

  2. En tu caso estás enviando por segundo:

    • 1 / 0.005 * 50 * 76 = 760,000
    • 1 / 0.010 * 10 * 76 = 76,000
    • 1 / 0.100 * 30 * 76 = 22,800

nota: se supone que 76 son los bits medios por mensaje (datos de 32 bits), esto depende de lo que se defina, por lo que puede variar. Ver el mensaje del bus CAN en Wikipedia .

Total: 760,000 + 76,000 + 22,800 = 858,800

Bus load = 858,000 / 500,000 * 100% = 171,76%

Esto ya es demasiado.

  1. Véase más abajo.

Asignación de ID

A principios de los años 90, la elección de los identificadores de los mensajes se hacía simplemente sobre de la identificación del tipo de datos y del nodo emisor; Sin embargo, como el ID también se utiliza como la prioridad del mensaje, esto condujo a un mal rendimiento en tiempo real. En estos escenarios, se requería un uso bajo del bus CAN de de alrededor del 30% para garantizar que todos los mensajes cumplieran sus plazos. Sin embargo, si las identificaciones se determinan en función del de la fecha de entrega del mensaje, cuanto menor sea el ID numérico y, por tanto, mayor sea la prioridad del mensaje, el uso del bus será mayor. mayor es la prioridad del mensaje, se puede lograr un uso del bus del 70 al 80%. antes de que se incumplan los plazos de los mensajes.

Por lo tanto, si está utilizando identificaciones basadas en la prioridad, el 70-80% está bien, y usted está muy por debajo de ese número.

1voto

Hexalis Puntos 1

La carga en un sistema CSMA/CA como CAN depende totalmente de la aplicación y debe evaluarse caso por caso, dada la calidad de servicio requerida. En teoría, como ya se ha dicho, basta con elegir la longitud máxima de las tramas (suponiendo un relleno medio), poner algunos bits recesivos entre tramas y cada cierto tiempo una docena más para resincronizar la estación de unión. Así que, desde un punto estrictamente teórico, se podría alcanzar un 99,9% de utilización del bus.

La verdadera pregunta es sus tramas de 100ms ¿cuánto pueden tardar en llegar? ¿cuánto jitter es admisible en la tasa de repetición? ¿Sus tramas tienen todos los 8 bytes de carga útil o hay algún esquema de compresión? ¿Hay algún evento más importante que sus tramas de 5ms?

La programación del bus de procesos puede ser muy complicada. También hay protocolos de franjas horarias basados en CAN (TT CAN, por ejemplo), el análisis es completamente diferente en ese caso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X