¿Cómo distinguir diferentes sensores idénticos en una red de bus CAN?

1

Conociendo el protocolo de bus CAN, hay partes que no pude entender por completo. Considere un automóvil con muchos sensores, por ejemplo, sensor de aceleración, sensor de estacionamiento, sensores de temperatura ubicados en diferentes partes del automóvil. Sé cómo funciona el arbitraje entre ellos pero aquí está la cosa: ¿cómo la ecu relevante que procesará la temperatura distingue los dos sensores diferentes? ¿Es que los dos sensores, aunque su trabajo es el mismo, para medir la temperatura, tienen diferentes identificaciones entre sí? (por cierto, sí, sé que un nodo puede enviar diferentes mensajes con diferentes ID)

Entonces, digamos que hay dos sensores de temperatura exactos, uno dentro del automóvil para el aire acondicionado (no es tan importante) y uno ubicado cerca del motor (muy importante) y está roto. ¿No puedo reemplazar el roto por el otro?

    
pregunta Binary Yildirim

4 respuestas

1

El protocolo CAN no transporta ninguna información en un marco que no sea la dirección de la unidad que envía el mensaje. Sin embargo, proporciona hasta 8 bytes de área de mensaje definida por el usuario. Por lo tanto, si desea transmitir de forma inequívoca un lectura de temperatura, debe hacerlo en el área de mensajes de datos y adjuntar que leer con información de origen.

CAN es un protocolo de igual a igual y no necesariamente lleva nada fuera del área del mensaje en el que se pueda confiar para el reconocimiento de cualquier parte en el bus.

    
respondido por el Andy aka
1

No, no puede ejecutar dos sensores que comparten el mismo identificador CAN en el mismo bus. Debe tener alguna forma de asignar identificadores únicos a cada sensor. Esto normalmente lo hace el fabricante cuando se diseña la red, pero se puede hacer dinámicamente diseñando un protocolo de nivel superior que incluya un dispositivo de coordinador de bus para detectar dispositivos conectados y asignar identificadores al inicio.

Si se usan dos sensores con el mismo identificador en el bus, en algún punto, cada sensor intentará transmitir un mensaje al mismo tiempo. Cuando se alcanzan los bits de datos de carga útil (diferentes), uno de los sensores detectará un error de lectura en el bus CAN y emitirá un cuadro de error que terminará el mensaje para ambos sensores. Una vez que el cuadro de error haya finalizado, ambos sensores intentarán enviar sus mensajes respectivos. Este proceso se repetirá hasta que los contadores de errores en cada nodo obliguen a los sensores a entrar en su estado de inactividad del bus donde ya no podrán operar.

    
respondido por el Jon
1

Basado en ID

El identificador es la única forma de reconocer que el mensaje proviene de qué Nodo CAN. Generalmente, los valores de estos identificadores fueron decididos por los OEM según la prioridad del mensaje, el ancho de banda en el canal, etc.

Digamos, por ejemplo, el sensor de temperatura que detecta la CA & El motor hace casi lo mismo. Pero no tiene el mismo nivel de prioridad asignado. Por lo general, la mayoría de los nodos del vehículo no "necesitan" la temperatura de CA para cambiar su comportamiento o tener cuidado. Pero la temperatura del motor es importante. Más ECU consumen la temperatura del motor que la temperatura de CA. Entonces, obviamente tiene que tener mayor precedencia. Esto se logra asignando un ID de alta prioridad.

Tomemos otro ejemplo de sensores de velocidad de rueda .

A diferencia de los sensores de temperatura que mencionaste, todos los sensores de velocidad de las ruedas son tan importantes como los otros. Todos los sensores eran "idénticos" y hacen lo mismo. Sin embargo, los OEM tienen que aportar ideas para compartir "efectivamente" el bus con los sensores. Básicamente, se trata de asignar ID y diseñar la carga útil del marco.

Por lo tanto, una posible forma de evitar conflictos en los valores del sensor en el bus es tener diferentes ID y enmarcar la carga útil en el marco.

Si los sensores fueran "idénticos", siempre puede reemplazar el sensor de un nodo a otro. Pero, no puede reemplazar los nodos CAN completos del sensor.

  

Un nodo CAN de sensor no es solo un sensor. Tiene más propiedades que   actuando simplemente como un sensor.

Editar

Para aclarar cómo los OEM manejan los sensores "idénticos". Considere los sensores de temperatura como ejemplo.

Tenemos un sensor de temperatura conectado a la ECU del motor para controlar la temperatura del motor. Tenemos otro sensor de temperatura conectado a la ECU del cuerpo para monitorear la temperatura de CA del vehículo. Incluso si los sensores fueran iguales, pero aquellos estaban conectados a diferentes ECU. Esto se debe al hecho de que la CA del vehículo se puede ENCENDER incluso sin que el Motor esté ENCENDIDO. Por lo tanto, necesitamos monitorear efectivamente la temperatura de CA cuando la CA está ENCENDIDA. Esto significa que los sensores "idénticos" no necesitan ser usados juntos o controlados juntos.

Entonces, considérelo ahora en el tablero, estamos viendo tanto la temperatura del motor como la CA. Tome, la temperatura de CA es de 21.5 grados centígrados y la temperatura del motor es de 78.255 grados centígrados.

Necesitamos una mayor precisión para que la temperatura del motor active la alarma de sobrecalentamiento del motor o para activar un refrigerante en el momento adecuado y para conocer la tasa de cambio de temperatura a lo largo del tiempo.

Sin embargo, la temperatura de CA se usa para mantener el mismo clima en el vehículo para la funcionalidad de Control de clima automático. Esto no es de alta prioridad y +/- 0.5 ° C es mucho más cómodo.

Entonces, para aclararte las cosas, los sensores eran los mismos. Pero, la precisión fue diferente en función de la funcionalidad que se utiliza. Sabe cómo cambiar la precisión, el voltaje de referencia, el ADC, etc. Esto también se refleja en la carga útil de los mensajes CAN que llevan la información del sensor.

Sabes, no podemos enviar el valor de punto flotante en el mensaje CAN. necesitamos convertirnos en un número entero multiplicando con un factor y la ECU receptora tiene que recuperar la temperatura dividiendo con el mismo factor.

Por lo tanto, para enviar la temperatura sin pérdidas, la temperatura de CA tendrá un factor de 10. lo que hace que el rango de valores sea de 0 a 512 (de 0 a 51.2 grados centígrados) que solo necesita 9 bits para transmitir. Sin embargo, la temperatura del motor tendrá un factor de 1000. lo que hace que el rango de valores sea de 0 a 131072 (0 a 131.072 grados Celsius) que necesita 17 bits para transmitir.

Por lo tanto, para responder a su pregunta, los fabricantes de equipos originales eligen ID para priorizar la información del sensor y enmarcar la carga útil para que los valores del sensor se utilicen de manera efectiva. Además de estos, había muchas otras preocupaciones al diseñar la red CAN para un vehículo. Solo intento mantenerlo en contexto y no confundirte tanto.

    
respondido por el Hari Krishnan
0

El identificador en un marco CAN le dice algo sobre el contenido del mensaje . No es una dirección.

Si tiene una docena de sensores idénticos en el sistema, no comparten el mismo identificador, ya que no tienen el mismo propósito.
Todos tendrán un identificador diferente para identificar el contenido del mensaje.

Por ejemplo: los sensores de temperatura de 8 cilindros del mismo tipo significa que todos deben estar configurados para enviar el identificador que especifica que está midiendo el cilindro X.

Para ayudar con esto, hay protocolos de capa superior para usar sobre ISO 11898, como J1939 o CANOpen .

J1939 por ejemplo:
Resuelve esto reservando el byte menos significativo del ID para una dirección de origen.

Esto permite que el contenido del mensaje (PGN) aún permita el arbitraje de prioridad, independientemente de la dirección de origen.

El PGN especifica que es un mensaje de temperatura del cilindro del motor, y la dirección de origen especifica qué sensor.

En general, se evita tener dos nodos que transmitan con identificadores iguales.
Dado que la transmisión fallará después del arbitraje si los datos del mensaje son desiguales. Ambos volverán a intentarlo y finalmente tendrán éxito. Pero incluso entonces estás viendo datos saltando alrededor de cada cuadro. A menos que algún campo en el mensaje describa más detalladamente el contenido del mensaje.
Lo que va en contra del propósito fundamental de la CAN. (ver primera línea)

Sin embargo, CAN es solo la capa 2, por lo que puede hacerlo. Aunque, hará que la integración del sistema sea mucho más difícil.

    
respondido por el Jeroen3

Lea otras preguntas en las etiquetas