CAN- “Los mensajes tienen ID no nodos”

3

He oído a muchas personas decir que el mensaje CAN puede tener ID y no nodos. Creo que esto podría deberse al hecho de que, independientemente de asignar una ID única para cada nodo, todos los nodos reciben los mensajes. Además, en caso de cualquier retransmisión de un mensaje, los mensajes duplicados se pueden descartar cuando se asignan identificaciones a los mensajes cuando se envían a cada nodo.

Pero, ¿qué sucede si un sistema tiene 3 maestros que hablan con muchos esclavos y los 3 maestros ejecutan el mismo código (como en un sistema de votación de 2 de cada 3)? En una arquitectura de este tipo, tiene sentido asignar a cada nodo una ID única para que el esclavo sepa qué maestro le envió los datos y responda a cada maestro de forma única. Además, no puedo pensar en una situación en la que un nodo pueda recibir un mensaje duplicado porque la retransmisión ocurre solo en el caso de detección de errores y cuando un nodo señala un error, cada nodo que recibió los datos destruye los datos recibidos.

Estoy confundido ahora porque planeo asignar Id's únicos a cada nodo y los maestros enviarán un mensaje a cada nodo en función de su ID de nodo (pero la gran mayoría de los expertos de CAN no están de acuerdo conmigo). Asignar a cada mensaje un ID único significaría que, si el Maestro A envía 500 mensajes, el Maestro A debe usar 500 Id. Únicos de los 2048 posibles (identificador de 11 bits). El Maestro A debe usar los 500 restantes y el 500 C. el Maestro B restante. Cualquier información sobre lo que sería un buen enfoque sería muy apreciada.

Además, cualquier situación en cuanto a cuándo un mensaje duplicado puede llegar a un nodo que ya recibió el mensaje sería de gran ayuda ya que sería una explicación sólida de por qué cada mensaje debe recibir una ID única y no un nodo. . Esto me ayudará a comprender que si el Maestro A siempre envía el mismo identificador, el receptor no tendrá forma de diferenciar si es un mensaje duplicado o no.

    

1 respuesta

3

Creo que estás malinterpretando esto:

  

He oído a muchas personas decir que el mensaje CAN tiene ID y no nodos.

Esto no significa que todos los mensajes enviados en el bus deban tener una ID única, o que nunca se pueda identificar qué nodo envió el mensaje. Significa que los ID se utilizan mejor para indicar qué tipo de datos se envían, no a dónde van los datos. Por ejemplo, si tiene un sensor de temperatura que transmite datos, puede asignar un número de identificación para que signifique "datos de temperatura del sensor # 1". Entonces cualquier nodo que se preocupe por los datos de temperatura puede recibirlo. Muchos (¿la mayoría?) Los controladores CAN pueden enviar y recibir múltiples ID fácilmente, por lo que a menudo no tiene sentido decir que un nodo tiene solo una ID.

En su caso, podría hacer ID para "comando del maestro 1 al esclavo 5", "comando del maestro 2 al esclavo 8", "respuesta al maestro 3 del esclavo 7", etc. No sé lo suficiente acerca de su sistema para decir si esa es la mejor manera de hacerlo.

No entiendo por qué los esclavos necesitan responder a cada maestro por separado. Si este es un sistema de mayoría de votos, ¿no debería ser suficiente la respuesta de un esclavo? Podría tener identificadores de mensajes separados para errores.

Recuerde que todos los nodos reciben todos los mensajes. Depende del nodo si almacena el mensaje o no.

    
respondido por el Adam Haun

Lea otras preguntas en las etiquetas