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.