Publicidad

Accediendo al bus CAN

Iniciado por map, Marzo 16, 2019, 11:14:27

Tema anterior - Siguiente tema

map

Abro un tema por aquí para hablar de esto ...

Cita de: celica en Marzo 16, 2019, 11:02:00
map, si redireccionas la salida standard a un fichero, sale en hex o es texto claro?

PD: gran trabajo de investigacion...voy a trastear yo tambien. gracias por compartirlo!

No hace falta redireccionar nada ... con candump -l te genera directamente el fichero, en formato segundo.milesima -entre parentesis-, idbus y datos, donde los datos son el identificador de la trama CAN (en hexadecimal), una almohadilla (#) y los datos que acompañan a la trama en hexadecimal del duro ... :)

Ejemplo de esta misma mañana:

(1552726889.777078) can0 156#0000000000000000
(1552726889.781086) can0 152#B0AC0000000000C0
(1552726889.797080) can0 156#0000000000000000
(1552726889.801077) can0 152#B0BC0000000000C0
(1552726889.807073) can0 282#FEB36CFEFE004000
(1552726889.819093) can0 156#0000000000000000
(1552726889.821085) can0 152#B0CC0000000000C0
(1552726889.837070) can0 442#4D12000000000000
(1552726889.837078) can0 156#0000000000000000
(1552726889.841064) can0 152#B0DC0000000000C0
(1552726889.851076) can0 375#0300000000000010
(1552726889.857078) can0 156#0000000000000000
(1552726889.860075) can0 284#8002000200800000
(1552726889.861066) can0 152#B0EC0000000000C0

celica


map

Pero eso son los PIDs para diagnosis ...

Tu le preguntas a la ECU correspondiente y te responde según ese documento ...

Con la conexión que he establecido estas conectado al bus CAN como si fueras una ECU más ...

Ves el tráfico de datos en tiempo real ...

El problema reside que interpretarlo tienes que conocoer los identificadores que usa cada ECU, que suelen ser específicos de cada coche ... y ademas ni Toyota ni Subaru sueltan prenda ... así que hay muy poca información ...

celica

Cita de: map en Marzo 16, 2019, 11:36:35
Pero eso son los PIDs para diagnosis ...

Tu le preguntas a la ECU correspondiente y te responde según ese documento ...

Con la conexión que he establecido estas conectado al bus CAN como si fueras una ECU más ...

Ves el tráfico de datos en tiempo real ...

El problema reside que interpretarlo tienes que conocoer los identificadores que usa cada ECU, que suelen ser específicos de cada coche ... y ademas ni Toyota ni Subaru sueltan prenda ... así que hay muy poca información ...

ah coño...claro...eso tiene mas sentido. creo que alguien del foro ya pregunto por este tema...si te enteras de algo, please share!

map

#4
Cita de: celica en Marzo 16, 2019, 12:07:40
...si te enteras de algo, please share!

Si, si ... siempre lo hago ...

He estado tomando datos esta mañana ... ahora tengo que analizarlos.

De momento, estoy con los datos tras pulsar por primera vez el contacto (antes no accedes a nada). Tras pulsarlo una vez empiezan a aparecer 11 tramas distintas con distintas frecuencias ... desde 50 veces por segundo para las tramas 152 y 156, a una vez por segundo para las tramas 374, 375 y 37A.

Cada columna representa el número de veces que aparece la trama en ese segundo (numero de la cabecera de la columna)















. CAN ID .. 1552736391 .1552736392 .. 1552736393 .. 1552736394 .. 1552736395 .. 1552736396 .. 1552736397 .. 1552736398 .. 1552736399 .. 1552736400 .. 1552736401 .. Total .
1525050505050505050505050550
1565050505050505050505050550
2821717171717171717171717184
2841010101010101010101010110
3741111111111111
3751111111111111
4403434334343438
4424343434343439
37A1111111111111
44D4334343434338
63B1222222222221
Total 1421421411431421421421421431411431563

Ni idea aun de lo que son o de lo que pueden ser ...

Tengo que hacer un volcado de mas tiempo, para ver si hay alguna trama con frecuencia mayor ... aunque no creo.

celica

Lo mismo con un analizador de protocolos, como el wireshark, puedes ver algo en claro...lo mismo alguien se ha currado una libreria...
A ver si tengo un rato y le echo un vistazo.

map

#6
No hace falta analizador de protocolos en este caso.  Volkswagen Research tuvo la gentileza de desarrollar SocketCAN y donarla al dominio público ...

Cuando haces candump (que es una herramienta de SocketCAN) los datos que te muestran están ya decodificados a nivel de protocolo.

Y así puedes tener algo como:

360   E1   00   71   7F   2D   00   01   00

que viene a significar que el identificador 0x360 tiene esa ristra de datos. Pero son datos ya a nivel de aplicación.

¿ qué significan ?

Pues eso es lo 'fastidiado' de saber si no te lo documentan ... Y eso no lo documenta el protocolo, lo documenta el fabricante de la ECU (o Toyota/Subaru que puede requisitarle lo que necesite para que funcione en el sistema que han diseñado)

Leyendo sobre esto en algunos foros, hay quien afirma que en el caso del toyobaru, el tercer byte de la trama identificada por 0x360, es el valor de la temperatura del aceite del motor en grados centrígrados + 40 ºC.

Es decir ... que si 0x71 = 113, eso significaría que el aceite está a 73ºC. (113 - 40 )

Y dice además, que el cuarto byte es la temperatura del refrigerante (también más 40ºC). Así que en la misma trama tendríamos ... 0x7F = 127 -> 87ºC.

Y probablemente tenga razón, pero viendo los datos en crudo es difícil llegar a esa conclusión ...

¿ qué significan el resto de datos que acompañan a éstos ? Ni idea ...

Además, para complicarlo más, en otro coche, el CAN ID 0x360 puede significar otra cosa totalmente distinta ...

Lamentablemente sobre el significado de las tramas de datos a nivel de aplicación para nuestro coche, no estoy encontrando mucha información, y deducirla va a ser complicado ...

Pero si pudiéramos saber cosas como el avance del encendido, la inyección de combustible, la masa de aire que está entrando y cosas así (que son cosas que están ahí en las tramas) puedes dibujarte los mapas de inyección y de encendido.

Incluso podrías ver como al cambiar alguna cosa en el coche, en la admisión, o el escape, por ejemplo, el cambio de comportamiento del coche se refleja en los datos y podrías analizarlo con datos ... (y ratificar -o no- las sensaciones.)

Será un trabajo duro y largo ... y no se que rendimiento le podré sacar (a parte de aprender mucho), pero seguiré curioseando ...

map

Cuando el coche está en marcha, se cruzan en el bus casi mil mensajes al segundo (unos 970, para ser exactos) ...



Alguno de ellos (sospecho que los del motor) tienen una frecuencia de 100 Hz, es decir, se mandan 100 veces cada segundo ...

Y he encontrado hasta 35 identificadores distintos ...

map

Después de un par de días de pruebas, sigo avanzando en el entendimiento de todos estos datos, pero hoy cuando he ido al coche a contrastar lo que había averiguado me he encontrado con un pequeño contratiempo ...



Mientras hacía pruebas ha sonado un pitido y se me ha encendido -una vez más- la luz de avería ... esperemos que sea transitoriamente.

De momento, paro las pruebas ... :)

J95

Qué interesante, sigo el tema con atención

Los conocimientos que tienes sobre la lectura de estos datos del CAN  son por hobby o profesionales?


map

Cita de: J95 en Marzo 22, 2019, 11:22:26
Qué interesante, sigo el tema con atención

Los conocimientos que tienes sobre la lectura de estos datos del CAN  son por hobby o profesionales?

Hmmmm ... pues mitad y mitad ...

Soy ingeniero industrial (me especialicé en electrónica y automática) y he trabajado toda mi vida en temas de desarrollos informáticos y telecomunicaciones ... así que me he pegado muchas veces con cosas parecidas ... aunque eso si ... tenía las documentación de los protocolos ... :)

... pero es la primera vez que me enfrento al bus CAN de un coche ... así que esa parte es mas 'hobbista' ...

Lo fastidiado es no tener la información de las tramas que usa el coche ... si no sería todo mucho más fácil ... pero hay muy pocas cosas y, por lo que he podido comprobar, no siempre ciertas ...

En cualquier caso, mi luz de avería desapareció a las pocas horas y ya he vuelto a las andadas ... a ver si este fin de semana saco un rato y os pongo por aquí (lo iré 'formalizando' en el blog) lo que voy encontrado ...

map

Os dejo un pantallazo del programita que tengo hasta el momento para que veáis que cosas he podido obtener.



(el ángulo de la dirección está ahora mismo 'en calibración' ... el resto de datos parece estar bien)

A ver si saco un rato y saco un pequeño vídeo para que lo veáis funcionar ... (aunque está lleno de fallos todavía ... :) ) ...

... y muuuucho rato para contar detalladamente lo que he ido haciendo ...

map

#12
Hala ... al final me he liado y me he puesto con el video ...

https://www.youtube.com/v/bZND6gdzlxY

Si ... ya se que hay datos que no se muestran bien ... a veces no se borran caracteres y otras veces se borran cuando no deben y te lia un poco ...

Recordad que es sólo una versión preliminar y todo está 'en fase de construcción' ... no seáis muy críticos a ver si me voy a desanimar ... :)

celica

muy chulo, si señor!
te has tirado lineas a pelo en shell script?

map

Cita de: celica en Marzo 22, 2019, 17:25:33
te has tirado lineas a pelo en shell script?

No, en C.

Publicidad