Interpretación de los datos del bus CAN desde el puerto OBD

1

Estoy usando un Arduino con MCP2515 y MCP2551 para leer datos de un bus CAN sobre el OBD-II puerto de mi auto, Honda Jazz 2012 . Por lo que he leído en otros foros y en el wiki OBD, puedo transmitir la consulta PID al motor a través de CAN ID 0x7DF y debería recibir los datos en 0x78E.

Estoy transmitiendo los datos en el formato descrito en la wiki:

Number of bytes|01|PID|0|0|0|0|0

Los datos que estoy recibiendo no contienen datos de CAN ID 0x78E o cualquier ID cercana. Además, incluso si no estoy enviando datos al bus CAN, sigo recibiendo los datos, por lo que al intentar eliminar el ruido, parece que todas las identificaciones de CAN se emiten todo el tiempo.

Entonces, probé algunos STN1110, intérprete OBD-a-UART, e intenté aprovechar la conexión entre STN y la ECU del automóvil. Parece que el STN tiene un ID CAN de 0x18DB33F1 y la ECU está transmitiendo los datos consultados a través de CAN ID 0x18DAF110. He puesto algunos de los datos aquí: enlace .

  • ¿Debo asignar a mi circuito una identificación manualmente? Creo que se hace automáticamente, de lo contrario no obtendré ningún dato.
  • ¿Cómo interpreto estos datos? ¿Hay alguna forma o simplemente tendré que leer más datos y darle sentido, eliminando el ruido poco a poco?

He leído que hay una puerta de enlace entre el puerto OBD y el bus CAN, por lo que para acceder a los datos desde el bus, necesitaré pasar la puerta de enlace. ¿Cómo?

    
pregunta Lalit Kumar

2 respuestas

0

Parece que la ECU del coche era un poco vieja y usa la lata en bruto en lugar de lata de diagnóstico. Cambié el coche y todo está funcionando como debería.

    
respondido por el Lalit Kumar
0

El bus CAN no es como un bus normal al que podrías estar acostumbrado. El bus CAN está basado en mensajes, no en módulos. Esto significa que cada mensaje tiene una dirección y cada módulo en el bus puede recibirlo al mismo tiempo. Los mensajes no se dirigen de módulo a módulo; Están dirigidos a todos. Cuando un módulo recibe un mensaje, decide si es necesario o no.

Si escucha el bus CAN, escuchará todos los mensajes que se transmiten todo el tiempo. Depende de su código filtrar lo que necesita. La mayoría de los módulos CAN integrales tienen una forma de leer los mensajes deseados y descartar los no deseados.

El bus CAN está cableado directamente al puerto OBD. Si la memoria me sirve correctamente, los pines 7 y 14. La puerta de enlace que menciona no está entre el puerto OBD y el bus CAN; es entre el bus CAN y los otros buses más lentos en el automóvil.

    
respondido por el vini_i

Lea otras preguntas en las etiquetas