ID de transmisión y mensaje CAN

0

Tengo dos nodos CAN. Por ejemplo, un nodo transmitirá la temperatura y el otro nodo recibirá los datos de temperatura.

Sabemos que el protocolo CAN utiliza identificadores de mensaje (ID). Entonces, lo que sucede es que el nodo receptor solicitará datos con un ID de 500. El nodo de transmisión lee la solicitud y escribe los datos con un ID de 3.

¿Puedo eliminar la verificación continua de solicitudes en mi código para el primer nodo y, en cambio, escribir los datos en el segundo nodo?

    
pregunta Ammar

2 respuestas

2

Los mensajes CAN siempre contienen un ID de 11 o 29 bits. La forma en que use esa identificación, si es que depende de usted.

Si solo tiene dos nodos, y uno de ellos solo envía un mensaje, el otro nodo podría ignorar por completo la ID recibida y simplemente procesar el mensaje de acuerdo con el único formato que puede tener. Sin embargo, esto es realmente malo, diría francamente irresponsable, la arquitectura del sistema. Sería mucho mejor mirar el ID y descartar los mensajes que no tengan el ID esperado. Esto es algo muy fácil de hacer, por lo que realmente no hay ninguna excusa para no hacerlo.

Un nodo que responde a una solicitud remota de ID 500 enviando un mensaje con ID 3 está roto o también está diseñado de manera irresponsable. No puedo imaginar ningún producto comercial haciendo esto. Podría ser una buena idea que el nodo solicitante envíe solicitudes para 500 y 3 por si acaso, y que esté preparado para manejar las respuestas con cualquier ID. Tal vez algún día el nodo estúpidamente diseñado sea arreglado o actualizado. Si el solicitante al menos sigue las reglas, habrá menos posibilidades de que surja un problema más adelante.

Sin embargo, consideraría seriamente encontrar una alternativa para un nodo que responda con 3 a una solicitud de 500. Algo que el diseño irresponsable probablemente tenga otros problemas. Huir.

    
respondido por el Olin Lathrop
1

Lo que entendí de tu pregunta es que tienes dos ID de mensajes

  1. ID de mensaje 500 - Solicitud de datos de temperatura
  2. ID de mensaje 3 - Datos de temperatura

Y creo que no está utilizando el marco RTR (Solicitud de transmisión remota) en el ID de mensaje 500.

Puede usar solo un ID de mensaje 3. El solicitante puede solicitar datos con el conjunto de bits RTR y el nodo con el sensor debe responder. Sería mejor si un nodo envía periódicamente datos a través de CAN. Eso es típico en el bus CAN que el nodo transmite periódicamente sus datos. De esa manera, el Solicitante puede no necesitar enviar las solicitudes. Tendrá datos periódicamente. Y si lo necesita, siempre puede enviar un marco RTR.

En el nodo receptor, puede configurar filtros de ID de mensajes (filtros de aceptación) para que solo los mensajes necesarios generen interrupciones y no todos.

    
respondido por el Swanand

Lea otras preguntas en las etiquetas