¿Múltiples dispositivos de bus CAN transmitiendo al mismo tiempo ... posible conflicto?

0

He trabajado con CAN bus recientemente y comencé a preguntarme qué pasaría si varios dispositivos en una red suceden repentinamente al mismo tiempo.

Me refiero a que todos los dispositivos en la red de bus CAN reciben los mensajes de cada uno. Pero ya que están en el mismo bus, ¿no habría un conflicto que resulte en que algunos dispositivos no reciban algunos de los mensajes del otro? Lo veo como una calle de un solo sentido donde tienes dos autos que intentan ir en dirección opuesta, lo que resulta en un choque y no llega a su destino.

No pude encontrar nada sobre esto en Internet ... además, esta pregunta probablemente se relaciona también con I²C o con otros protocolos de comunicación similares.

    
pregunta Flint

1 respuesta

0

Como dijiste, cada nodo recibe los mensajes de los demás. Esto permite que los nodos eviten cualquier conflicto en el bus escuchando el bus. Cada nodo escucha el bus antes de transmitir un mensaje. Si el bus no está ocupado, entonces el nodo transmite su mensaje.

También hay un mecanismo de prioridad para evitar conflictos: si un mensaje tiene una prioridad más alta (es decir, menor ID ) , entonces recibe el bus acceso. Un ejemplo:

Supongamos que hay dos transmisores que intentan transmitir un mensaje. Uno con un ID de 0x7FA y el otro 0x7FF . Comenzaron a transmitir directamente al mismo tiempo mediante la transmisión del bit SOF (inicio de trama).

A: ¯¯¯¯¯¯¯¯¯|___|¯ SOF

B: ¯¯¯¯¯¯¯¯¯|___|¯ SOF

No hay conflicto aquí. Luego envían la ID bit a bit, pero MSB primero.

A: ¯¯¯¯¯¯¯¯¯|___|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|___|¯¯¯|___| SOF 1 1 1 1 1 1 1 1 0 1 0 | 7 | F | A | | | conflict here | B: ¯¯¯¯¯¯¯¯¯|___|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯|¯¯¯| SOF 1 1 1 1 1 1 1 1 1 1 1 | 7 | F | F |

El conflicto se produce cuando se envía el noveno bit (es decir, el tercer bit de la ID). El segundo dispositivo pierde el arbitraje (porque tiene una prioridad más baja debido a una identificación más alta) y omite el bus, por lo que el primer dispositivo gana y continúa transmitiendo su mensaje.

    
respondido por el Rohat Kılıç

Lea otras preguntas en las etiquetas