Por lo general, no soy una "persona del automóvil", así que espero poder explicar esto lo suficientemente bien como para obtener ayuda aquí:
Cuando envío mensajes a un dispositivo OBD-II, recibo una respuesta en la mayoría de los autos que he probado. Sin embargo, con los autos que aparentemente tienen más de un chip ECU, recibo una respuesta de cada uno de ellos. Por ejemplo, si envío un 01 0C
comando PID a un vehículo con 3 chips de ECU, recibo 3 respuestas que generalmente son muy similares pero aún diferentes.
Se 01 00
supone que un comando devuelve 4 bytes que indican los PID admitidos del vehículo, pero esto también devuelve 4 bytes para cada ECU, uno de los cuales es de 4 bytes completamente desarrollados con varios indicadores activados y desactivados, mientras que los otros parecen tener solo un puñado de banderas activadas (estas banderas hasta ahora parecen ser siempre banderas que están incluidas en la respuesta 'principal', pero no estoy seguro si este es siempre el caso).
Ejemplo:
SENT: 01 00
RECEIVED:
00 BF BF AC D3 - This response has the most binary flags turned on
00 98 18 80 11 - 8 flags on here
00 98 18 80 13 - 9 flags on here
Las últimas dos líneas consisten en banderas que también están marcadas dentro de la primera línea, pero la línea 3 tiene una bandera adicional que la línea 2 no tiene.
Me parece que tal vez hay una sola ECU que califica como el chip 'primario' que debería estar escuchando cuando envío comandos, y (creo) entiendo que puedo usar una máscara / filtro CAN ID para solo pon atención a las que necesito.
La pregunta es: ¿existe realmente una 'ECU primaria' a la que deba prestar atención, o son todas estas respuestas igualmente importantes? Si hay uno primario al que necesito apuntar, ¿hay un comando que pueda enviar para determinar cuál es el 'más significativo'?
Vehículos probados en:
2011 Chevy Cruze [2 ECUs]
2015 BMW M5 [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]
Respuestas:
Si su vehículo es 2008 o más nuevo, está utilizando el protocolo can, puede usar el comando AT CR para seleccionar de qué ECU desea escuchar.
Así es como:
enviar
esto activará los encabezados para ver las direcciones de las ECU.
enviar
Este es un comando OBD para mostrar cuáles de los pids del 1 al 20 son compatibles.
su respuesta debería ser como:
esto muestra que tiene 2 ECU 7E8 (motor) 7E9 (transmisión),
he visto 5 ECU devueltas: 7E8,7E9,7EA, 7EB, 7EC.
Para escuchar de una sola ECU, emite AT CRA xxx donde xxx es la dirección de la ECU.
envía lo siguiente
entonces
volverá:
enviar
para apagar los encabezados y luego enviar:
y volverás solo
Si su vehículo es una lata de 29 bits, la resonancia 0100 se verá así:
Esto muestra 2 ECU 18DAF118 (transmisión) y 18DAF110 (motor).
enviar
escuchar solo del motor.
fuente
CAN no funciona como piensas.
CAN no está basado en módulos, está basado en mensajes. Ningún módulo habla directamente con ningún otro módulo. En CAN, un módulo genera un mensaje con una dirección, esa dirección identifica los datos que estarán contenidos en el mensaje. También la dirección da la importancia del mensaje. Cuanto menor sea la dirección, mayor será la prioridad.
Por ejemplo, el ABS transmitirá la velocidad del vehículo. Cualquier otro módulo que necesite los datos lo leerá.
No hay ningún módulo que sea más importante que cualquier otro, lo importante es la prioridad del mensaje.
fuente