¿Cada nodo en un bus CAN sigue transmitiendo datos sin importar qué, o solo transmite datos cuando otros nodos lo "solicitan" en el mismo bus?
¿Cada nodo en un bus CAN sigue transmitiendo datos sin importar qué, o solo transmite datos cuando otros nodos lo "solicitan" en el mismo bus?
En primer lugar, el mecanismo básico de transferencia CAN es:
Cualquier nodo puede iniciar una transferencia.
Si un nodo desea transmitir y el bus está ocupado, espera hasta el final del paquete actual.
Si dos nodos comienzan a transmitirse al mismo tiempo, el mensaje con la ID más baja tendrá prioridad, el mensaje con la ID más alta se cancelará, espere hasta que el bus esté inactivo y luego intente nuevamente.
La mayoría de los nodos se configurarán para generar un impulso ACK al final de cada paquete válido que reciben. Esto no significa que harán nada con el paquete, solo que leen un paquete y una suma de comprobación válidos. Múltiples nodos pueden generar un ACK para el mismo paquete sin ningún problema (normalmente todos los dispositivos en el bus) Si el transmisor no ve ningún impulso ACK, le indicará a su controlador que hubo un error de transmisión.
No hay nada acerca de un bus CAN que requiera que el sistema continúe transmitiendo, no importa qué o solo transmita cuando se solicite, eso depende completamente del software que controla los mensajes. Todo lo que requiere el bus CAN es que el bus tenga al menos dos nodos, la terminación correcta del bus, y que los nodos estén configurados de tal manera que al menos un nodo reconozca cada paquete.
Hay otros protocolos estándar que se pueden usar sobre la CAN (por ejemplo, ISO 15765-2 ) para controle la transmisión de mensajes en una estructura de solicitud / respuesta, pero son completamente opcionales. Si es mejor simplemente enviar mensajes, usar un protocolo estándar, usar su propio protocolo o una combinación de los anteriores, depende completamente de la aplicación en cuestión.
En general, los nodos están configurados para transmitir en un período de tiempo que tiene sentido para ese nodo en particular. Los receptores están configurados para escuchar los mensajes que les interesan.
No hay nada que le impida crear un nodo de tipo de solicitud / respuesta, pero no es una buena manera de ampliar los sistemas de mensajería. (Esto requiere dos transmisiones para 1 pieza de datos: una solicitud, una respuesta).
Cada nodo puede transmitir datos de forma independiente, es decir, no se requiere un permiso o solicitud maestra. Para evitar cualquier caída en el bus, cada nodo primero "escucha" el bus y luego transmite los datos si el bus está listo.
Si hay un transmisor, entonces debería haber un receptor, ¿verdad? Uno puede solicitar algo de información y el otro puede responder, o un nodo puede bombear periódicamente datos específicos y el otro (s) puede procesarlo. Un buen ejemplo es un automóvil: un nodo colocado en una puerta (por ejemplo, la parte delantera derecha) puede transmitir datos que contienen el estado de la puerta (abierta o cerrada, estado de la ventana, etc.) a una velocidad de, digamos, 10 veces por segundo, por lo que que el nodo principal (tal vez un maestro) lo sabe y advierte al conductor con un mensaje en pantalla y / o un sonido.
Los transceptores CAN supervisan el bus, ya que transmiten. Si el voltaje (diferencial) no es como ellos esperan, abortan el paquete de datos.
Lea otras preguntas en las etiquetas automotive communication can