Prueba de bus CAN a través de bucle de retorno: ¿posible o no?

3

Quiero probar la integridad del bus CAN (también mi transceptor CAN) periódicamente usando el siguiente método (independiente de los otros nodos).

Suponga que siempre existen dos nodos (nodo A y nodo B). Cuando el nodo A transmite un mensaje en el bus, el nodo B recibirá el mensaje. Pero, ¿el nodo A también puede recibir el mensaje para que pueda confirmar que los datos se han enviado al bus y se han recibido sin corromper?

Estoy confundido acerca de si el transmisor se puede usar para recibir el mismo mensaje que transmite, de modo que la comprobación de estado del bus puede ser independiente de los otros nodos. Aunque el mensaje que se enviará en el bus será recibido por los otros nodos, no importa, descartaré dichos mensajes en el filtro de aceptación / software, etc. en los nodos receptores.

Si este método se puede usar además de todos los mecanismos de error, CRC, etc. provistos en la especificación CAN en sí mismo o si existen otros métodos para verificar la integridad del bus CAN a través del software (como bucle interno, prueba de eco). , etc.). Estoy usando el microcontrolador BTW RM57 (si ayuda).

Gracias

    

3 respuestas

6

Todas las comprobaciones de errores de hardware de CAN se realizan por hardware, los controladores CAN.

Un nodo CAN no puede activarse, por diseño. No recibirá sus propios mensajes. CAN debe tener al menos dos nodos para trabajar: un bus CAN con un solo nodo se considera defectuoso, es de sentido común. Por lo tanto, no tiene sentido tener una "verificación independiente".

(Con una excepción: si habilita un modo de depuración llamado "loop-back", que es compatible con la mayoría de los controladores CAN. Loop-back es una función que permite al controlador CAN hablar consigo mismo sin enviar nada en el bus) . Esto se usa solo para propósitos de resolución de problemas y simulación y no tiene sentido utilizarlo en la aplicación final. Normalmente, se usa cuando era barato y solo compró 1 placa de evaluación, etc.)

La validación de la recepción del mensaje se realiza cuando el receptor confirma el mensaje configurando los bits de reconocimiento en la trama CAN. enlace . Esto lo hacen los controladores CAN y no es necesario que su controlador de software o su protocolo de nivel de aplicación se preocupen, además de verificar los indicadores de error después de cada transmisión.

Ahora, si desea saber si el nodo CAN correcto recibió el mensaje, en lugar del nodo cualquiera , entonces esa es otra historia no relacionada con la salud del hardware del bus . Tales cosas deben ser ordenadas en el protocolo de alto nivel.

    
respondido por el Lundin
2

Algunos controladores CAN tienen modo de bucle de retorno. Sin embargo, no envían el mensaje a través de la línea, se encargan de enviar y recibir el mensaje internamente. La línea RX se ignora, lo que significa que no puede recibir mensajes de otros nodos. Supongo que no desea cambiar entre el modo normal y el modo de bucle invertido.

Le sugiero que implemente un protocolo de nivel superior para rastrear y corregir errores.

    
respondido por el cagatayo
1

Realmente no necesita hacer esto, porque su mensaje transmitido debe ser reconocido por uno de los otros nodos. No se puede aceptar. Por lo tanto, si no hay conexión, su nodo se retransmitirá hasta que alcance el límite de error y luego se apague.

Sería mejor detectar el estado de bus apagado y luego idear una forma de recuperarse de él.

    
respondido por el OXO

Lea otras preguntas en las etiquetas