¿Cómo especifico si debo enviar un mensaje de bus CAN en CAN de baja o alta velocidad?

0

Soy un estudiante que realiza una pasantía y debo enviar un mensaje de autobús CAN a un vehículo. No tengo experiencia con el bus CAN, pero es parte de mi proyecto, así que estoy tratando de aprender.

Tengo que usar un i.MX 6 que tiene Linux OpenWrt en él. Tiene instalado can-utils, y puedo enviar comandos como "cansend can0 xxx # xxxxxxx" y verlos recibidos en nuestro programa interno.

Mi problema es que usamos la CAN de baja velocidad aquí y mis mensajes se envían a la CAN de alta velocidad, por lo que cuando trato de enviar un mensaje en un vehículo, no funciona. ¿Hay alguna manera de forzar que el mensaje se envíe en baja velocidad para que el vehículo lo reconozca?

Procesador: procesador de aplicaciones i.MX 6

SO: Linux - OpenWrt

Utilidad CAN: canutils

    
pregunta KP123

2 respuestas

1

La siguiente descripción puede variar según cada fabricante, pero los conceptos son similares. Básicamente, un vehículo funciona con dos redes CAN físicamente separadas, que es la CAN alta, a veces referida como C-CAN, y la CAN baja, a veces referida como B-CAN. El CAN alto generalmente se ejecuta a 500 kbps y conecta las ECU del tren motriz, mientras que el CAN bajo se ejecuta a 125 kbps y conecta medios / clúster y otros sistemas que no son relevantes para la seguridad. El OBD a menudo no está conectado a ninguno de los anteriores, puede ser un tercer bus conectado a la puerta de enlace del sistema: el cuerpo. La última es una ECU centralizada que está conectada a todos los buses CAN y puede actuar como un enrutador CAN o tener su propio procesamiento. Normalmente, si envía mensajes a través del OBD, no llegará a su destino porque el cuerpo puede actuar como un servidor de seguridad para evitar el ingreso de datos no deseados a sus sistemas. Pero hay casos en los que el OBD se conecta a un bus alto / bajo en particular, aunque no es muy seguro. Primero debe averiguar a qué autobús está conectado y si este autobús tiene acceso a cualquier ECU a la que intenta llegar. Un buen enfoque es tratar de escuchar su bus. Si no llega ningún mensaje, probablemente esté conectado al cuerpo que está bloqueando todos sus mensajes.

ADVERTENCIA: enviar mensajes a través de los autobuses del vehículo puede causar un comportamiento impredecible y riesgos de seguridad

    
respondido por el PDuarte
0

No hay cosas como las velocidades CAN estándar "alta" y "baja". Hay un continuo de velocidades de bits que un bus CAN puede usar, con el límite superior de 1 Mbit / s en la mayoría de las especificaciones oficiales.

La velocidad de bits se decide como parte del diseño de cualquier bus CAN. Esto no se comunica en el bus de alguna manera. Tienes que saber por adelantado lo que es participar. Dicho esto, debería poder inferir la tasa de bits capturando algunos bits con un alcance o un analizador lógico. Después de capturar suficientes bits, existe la posibilidad de que el nivel más corto que veas sea, de hecho, un solo bit.

De una forma u otra, depende de usted configurar todos los nodos en el bus a la misma velocidad de bits, o ajustar su único dispositivo a la tasa de bits del bus si no tiene el control del bus.

En general, se elige la velocidad de bits en función de la distancia máxima de nodo a nodo a lo largo del bus. 1 Mbit / s funciona hasta 10s de metros bajos. 500 kbit / s es bueno para algo del tamaño de una casa típica. El estándar NMEA2000 utiliza (no recuerdo exactamente) 200 kbit / s para barcos grandes.

Para un vehículo hasta el tamaño de un camión típico, usaría 1 Mbit / s.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas