Orden de transmisión de los mensajes de prioridad inferior y superior en el bus CAN

0

Me gustaría hacer una pregunta teórica sobre el protocolo del bus CAN.

Digamos que tenemos tres nodos, a saber, A, B y C. El primer mensaje que tiene una prioridad más baja se envía de un nodo a un nodo C. El segundo mensaje que tiene mayor prioridad se envía desde el nodo B al nodo C durante la transmisión del primer mensaje.

¿Se procesará el mensaje de prioridad más baja antes que el mensaje de prioridad alta o se detendrá el mensaje de prioridad más baja?

    
pregunta Akif Çelebi

2 respuestas

4

Lee las especificaciones de CAN.

Los nodos CAN siempre esperan el final de cualquier mensaje existente antes de intentar transmitir. Las colisiones solo ocurren cuando dos nodos deciden hacer esto al mismo tiempo. Una vez que un mensaje está en curso con un solo nodo transmitiendo, ese mensaje se completará antes de que cualquier otro nodo intente transmitir.

    
respondido por el Olin Lathrop
1

El arbitraje CAN se basa en la identificación del mensaje, por lo que si dos mensajes comienzan a transmitirse simultáneamente, gana el que tenga la identificación más baja (prioridad más alta) y el controlador CAN con la identificación más alta retroceda y vuelva a intentarlo una vez que el bus esté disponible. Esto se logra monitoreando el bus durante la transmisión; ya que el bit 0 es dominante en el bus CAN, si transmite un 1 en su ID pero lee un 0, la conclusión es que algún otro controlador está transmitiendo con una prioridad más alta.

No existe un mecanismo que cumpla con las normas para interrumpir un mensaje en curso en el bus, por lo que los controladores que se comportan correctamente no transmitirán hasta que se complete el mensaje actual.

En resumen, si los mensajes comienzan a transmitirse al mismo tiempo, el mensaje de mayor prioridad se recibirá primero. Si el mensaje de prioridad más baja comienza primero, se recibirá primero. En el nodo receptor, depende del programador decidir cómo manejar las prioridades si se recibe un mensaje de mayor prioridad antes de que se complete el procesamiento relacionado para el mensaje de menor prioridad.

    
respondido por el Scott Winder

Lea otras preguntas en las etiquetas