Una ID no va lincada a un nodo. Simplemente indica que informacion hay en el mensaje. Aunque suele ser un dispositivo concreto quien la envia, no se ha de pensar en una red CAN como las redes convencionales de maestro-esclavo. Pero si que es cierto que suele ser el mismo dispositivo quien la usa.
Por ejemplo, un coche tiene:
- Centralita motor
- Centralita ABS (frenos)
- Display
La centralita ABS manda el mensaje, pongamos 0x100 con las velocidades de las 4 ruedas. Como disenyo, has elegido que el ID=0x100 es el cual va a contener dicha informacion.
Todas las demas centralitas escuchan todos los mensajes de la red, y eligen si quieren usar dicha informacion o no. Estan monitorizando el bus, y cuando llega un mensaje que tiene ID=0x100, saben que dentro va a estar las 4 velocidades de rueda.
Por ejemplo, el Display la usa para mostrarte la Velocidad del coche.
Y la centralita motor lo usa para el control de velocidad, o para control de traccion,.....
Por otro lado, el ID tambien sirve para indicar prioridades. Si dos dispositivos intentan enviar a la vez informacion, aquel que envia un mensaje con ID mas baja, sera el que "gana" y el otro esperara a que el bus este libre para reenviar el otro mensaje (ID mayor).
Es decir, usas las ID mas bajas, para aquella informacion que quieres que se procese la primera. Imagina que tienes un accidente, que se detecta por la centralita del Airbag (con un acelerometro).
Pues esta envia un mensaje de alta prioridad (ID baja) para que otros dispositivos actuen (como por ejemplo parar el motor, desenchufar las bombas de gasolina,....)
Saludos
Igor R.