CAN bus

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Responder
Mensaje
Autor
Avatar de Usuario
heli
Mensajes: 1957
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

CAN bus

#1 Mensaje por heli »

El bus CAN es cada vez más usado, cuando empecé a trabajar con él me daba algo de miedito, pero tiene poco misterio.
Sin entrar en mucho lío técnico es el bus es así:

Es un bus multimaestro y multiesclavo, cualquier nodo puede enviar datos y todos pueden recibir los datos. Existe un sistema de señalización y detección para evitar contención, etc.

Eléctricamente es un bus diferencial (sólo se usan dos hilos trenzados), la impedancia caraterística es de 120 Ohms (los terminadores de línea deben usarse o no igual que en otros buses). Se pueden usar velocidades desde 125 Kbit/seg hasta 1000 Kbit/seg, aunque técnicamente es posible bajar hasta 25 Kbit/seg. El diferencial de tensión para detectar bit es de unos 1,5V. Se usan transceivers específicos para conectar este bus con los controladores de bus, como el MCP 2551, el TCAN4420 o el SN65HVD230. Los hay alimentados a 5V o a 3.3V, tolerantes a fallos, con enable etc etc.

Junto con el transceiver se debe usar un chip controlador de bus CAN, los más populares son los TJA1040 y el MCP2515. Estos chips se encargan de detectar el bus libre, generar y chequear el CRC, almacenar y filtrar las tramas de datos e informar de la salud de la transmisión.

Muchos microcomputadores llevan integrado un periférico CAN o ECAN (can extendido), suelen ser compatibles a nivel de registros con el TJA1040 para facilitar la programación. La conocida crisis de los semiconductores afecto a este tipo de chips, sigue siendo dificil encontrar en el mercado volúmenes altos de chips que tengan este periférico. La industria del automóvil los demanda mucho, el bus CAN se usa muchísimo en automoción, cada ECU del vehículo lleva uno o dos y un vehículo moderno puede tener 10 ECUs o más.

Las tramas de datos que envía o recibe el bus CAN son muy sencillos, un ID de 11 o de 29 bits (extended ID) y hasta 8 bytes de datos de 8 bits. Eso es todo.

El protocolo lógico que da significado a estos datos depende de la aplicación, en automoción existe uno estánar con muchas extensiones específicas de cada fabricante, también existe el CanOpen que se usa en la industria para entradas y salidas distribuidas. Existen muchos otros... y fuera de los estándares cada fabricante puede inventar un protocolo distinto, por lo tanto estos datos pueden tener distintos significados en distintas aplicaciones.

La herramienta más barata para hacer diagnóstico e ingeniería inversa del bus CAN es este "bus can analyzer" de Seed Studio: https://www.seeedstudio.com/USB-CAN-Ana ... -2888.html que también puede comprarse por Amazon o Aliexpress. El programa que gestiona este interface permite seleccionar todas las velocidades, recibir y filtrar tramas, enviar tramas puntuales o periódicamente, responder automáticamente ante determinadas tramas y salvar a disco... ¿qué más se puede pedir?.
Imagen

Para afinar todavía más es posible fabricar un dispositivo casero para comunicaciones CAN con ARDUINO, basta un arduino de cualquier modelo y un interface CAN con MCP2515 como este: https://www.amazon.es/AZDelivery-MCP251 ... XSFD8?th=1 que incluye el transceiver. Conectar esto al bus CAN, al arduino por bus SPI y cargar el sketch adecuado para las tareas que se desean realizar. Hay muchos recursos en internet para aprender al respecto.
Imagen
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

Avatar de Usuario
heli
Mensajes: 1957
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: CAN bus

#2 Mensaje por heli »

Con el BUS can funciona CanOpen, que es un estándar para intercambiar datos de entradas y salidas en entornos industriales. Muchos sensores y actuadores comerciales lo utilizan.
Este estándar define lo que significa el Id y los 8 bytes de datos de cada trama de comunicación CAN, esta página lo explica bastante bien: https://www.csselectronics.com/pages/ca ... mple-intro

En CanOpen el campo CAN ID de 11 bits ( aquí llamabo COB-ID ) se interpreta dividido en dos partes, una de 4 bits que identifica el código de función y otro de 7 bytes que identifica el nodo dentro del bus. Por lo tanto existen 128 nodos distintos y 16 códigos de función distintos.

Los 8 bytes de datos tienen distintos significados dependiendo del código de función.
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

XBaroman
Mensajes: 167
Registrado: Dom Feb 13, 2011 7:04 pm
País: España
Ciudad: Alnorte

Re: CAN bus

#3 Mensaje por XBaroman »

...interesante... !!!!

..justo estos días tengo que ver los errores de un coche usando el puerto OBD2, aunque en este caso el vehículo dada su antigüedad no usa el protocolo CAN sino el primer protocolo que se implemento en automoción el ISO 9141 y que solo se usa para verificación de parámetros relacionados con la parte motor, abs, emisiones y transmisión.

Pero la claridad de la exposición hace "perderde un poco el miedo".
Gracias.

Avatar de Usuario
heli
Mensajes: 1957
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: CAN bus

#4 Mensaje por heli »

El ISO9141 es el que usa la línea K para la comunicación... difiere en la capa física, pero luego los comandos KWP 2000 son los mismos que luego se estandarizaron para el CAN del OBD2
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

Avatar de Usuario
heli
Mensajes: 1957
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: CAN bus

#5 Mensaje por heli »

Como curiosidad, los coches modernos llevan muchas centralitas más sencillas que NO usan comunicación CAN.
El bus LIN se utiliza, por ejemplo, para recopilar datos del sensor de lluvia, o encender faros, elevalunas. Se utiliza para tareas de baja prioridad, o donde la latencia no es importante, es mucho más barato que el bus CAN.
Las centralitas CAN llevan un interface LIN para comunicarse con ellas. Es posible diagnosticarlr estas centralitas LIN a través del OBD2 mediante un protocolo específico (LIN over UDS).
https://www.csselectronics.com/pages/li ... tro-basics

Físicamente el bus LIN es muy similar a la línea K de la ISO 9141, comunicación serial asíncrona half duplex hasta 20 Kbauds con checksum en un esquema maestro-esclavo.
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

XBaroman
Mensajes: 167
Registrado: Dom Feb 13, 2011 7:04 pm
País: España
Ciudad: Alnorte

Re: CAN bus

#6 Mensaje por XBaroman »

casualmente hace tres días mi coche decidió no arrancar y aunque lo intenté no pude saber con certeza que pasaba, además de que estaba de viaje y no tenía ningún recurso a mi alcance, por lo que tuve que acudir al mecánico, que acudió con su equipo (lector obdii y ordenador) con programa oficial de la marca,..
Resultado, ... ningún error se indicaba en su ordenador, y ningún error estaba registrado..... y según las PCM del vehículo todo correcto y ningún error registrado, pero obviamente el motor no arrancaba..... pero como mecánico experimentado se fue directamente a la egr y allí estaba el fallo, que debía estar registrado, pero ningún registro ni error se obtenía al hacer la lectura por el puerto obdii. ....?????

Avatar de Usuario
heli
Mensajes: 1957
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: CAN bus

#7 Mensaje por heli »

¿No arrancaba por la EGR? es raro, la EGR recircula una parte de los gases de escape a la admisión, afecta al rendimiento del motor y a la contaminación, pero no al arranque.
Esta es la EGR de mi coche, funciona sin ella (si se tapan los conductos de gases y se hace un bypas del circuito de aceite):

Imagen

Como forma parte del sistema anticontaminación para cumplir EURO6 da fallo en el tablero y no pasa la ITV sin ella.
Hay muchos fallos que las ECU no pueden detectar mediante sus sensores y no se reflejan en el OBD2, para eso deben estar preparados los mecánicos. Todavía hay muchos problemas que hay que resolver a la antigua usanza.
Por ejemplo, la EGR de la foto detecta la posición de la válvula de recirculación de gases mediante un sensor HALL en un piñón. Pero si falla la leva de reenvío del reductor a la válvula, esta dejará de funcionar correctamente y la ECU no verá que no está en la posición correcta.

Los errores que registra el OBD2 son de traca, cada vez que uso la maquinita hay decenas de errores triviales (warnings) que no afectan al funcionamiento, pero cualquier parámetro fuera de márgenes se registra. Luego encontrar los errores verdaderos cuesta un montón
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

XBaroman
Mensajes: 167
Registrado: Dom Feb 13, 2011 7:04 pm
País: España
Ciudad: Alnorte

Re: CAN bus

#8 Mensaje por XBaroman »

...bueno arrancar,... arrancaba, pero como la egr debía estar bloqueada en abierto, en un segundo o dos se paraba, ni siquiera llegaba a régimen de ralenti....y a ese régimen veo que si entran gases de escape imposible mantener el motor en marcha.
Lo curioso es que el PCM no ha registrado ningún error.
Ahora en la egr está obturado el tubo de entrada de gases .... y veremos...

Me consta que ahora las egr´s están mucho más integradas en todo el sistema de gestión del motor y no se pueden "puentear", pero en mi caso el PCM solo debe hacer un cálculo más o menos básico de lo medido por el caudalímetro menos el caudal que teóricamente entre por el retorno de la egr, según el régimen del motor la posición de acelerador, según el grado de apertura que se haya ordenado a la válvula de recirculación, y otros parámetros ,combinando todo esto para calcular el nivel de combustible a inyectar.

Avatar de Usuario
Rovellat
Mensajes: 9662
Registrado: Mar May 26, 2009 9:39 pm
Ubicación: Palma de Mallorca (España)

Re: CAN bus

#9 Mensaje por Rovellat »

Me espera en Palma un lector de OBD2 que creo que va por móvil, o tablet, vamos que lo compré justo antes de la trashumncia y ahora ando con otros temas.

Es para ver si consigo quitar la avería al mengane merdeux MR2, que va ya para un año, espero que me ayudéis a jugar con él.

Saludos.
Cielo azul sobre campo de mieses, ánimo.
Constitución Española:
Todos los españoles tienen el deber de trabajar y el derecho al trabajo.
Todos los españoles tienen derecho a disfrutar de una vivienda digna y adecuada.

Avatar de Usuario
heli
Mensajes: 1957
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: CAN bus

#10 Mensaje por heli »

Los lectores OBD2 convencionales suelen servir... En general pueden acceder a todos los servicios disponibles en las ECUs a través del bus CAN del OBD2.
La pega es que los software de diagnóstico de terceros que existen para estos dispositivos sólo permiten visualizar y borrar los errores estándar, definidos por la norma J1979.
Los fallos detallados y el acceso a algunas ECU sólo pueden conseguirse mediante el software de la marca del vehículo a través de la herramienta de diagnóstica propia. Para esto utilizan unos códigos de operación que no están definidos en la norma (vendor specific) y que varían de un fabricante a otro.
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 0 invitados