Recepción de PID OBD-II retardada CAN 29 bits / 500 kbit / s. Hay un desplazamiento

1

Hice un lector OBD-II, y funciona sin problemas tanto para CAN 11 bits / 500 kbit / sy CAN 29 bits / 500 kbit / s. Pero no siempre; cuando estaba probando un Honda Accord, mi lógica de detección CAN falló (CAN 29/500 encontrada a través del escáner ELM).

Lógica:

CAN_Detection () → configure el ID de solicitud y el ID de respuesta para CAN de 11 bits → GetPid (ENGINE_RPM, & buffer) → si recibimos RPM y RPM mayores que 0, entonces protocol = CAN11.

Si ha fallado → configure el ID de solicitud y el ID de respuesta para CAN de 29 bits → GetPid (ENGINE_RPM, & buffer) → si recibimos RPM y RPM mayores que 0, entonces protocol = CAN29

Durante la depuración, noté que recibía un pid diferente como respuesta. Por ejemplo, cuando solicito RPM (0x0C) obtengo 0x0D (velocidad), y de acuerdo con mi lógica, estoy verificando si el pid que solicité y el que recibí son los mismos. Pero no es que no tenga RPM; Lo consigo después de un desplazamiento de alrededor de cuatro lecturas. Sé que si cambio esto y tengo un enfoque diferente para verificar la CAN, se solucionará mi problema, pero me preguntaba por qué estaba obteniendo un valor de compensación.

    
pregunta clmno

0 respuestas

Lea otras preguntas en las etiquetas