Comprender la diferencia entre las ID CAN y los PIDS en OBD-II

1

Estoy tratando de entender el protocolo CAN para leer la información de diagnóstico de un automóvil. Por ejemplo, sé que en el automóvil en el que estoy trabajando utiliza el identificador CAN 0x7E0 como una consulta y 0x7E8 es la respuesta devuelta.

Estoy usando un Vector GL1000 logger y estoy escribiendo para esto. El GL1000 usa un lenguaje tipo C, y para mí, para recuperar información, utiliza el siguiente formato:

VAR Variable1 = CAN1 DATA (can-id) [bitA bitB] 

Y, por ejemplo, si quisiera recuperar la temperatura del refrigerante del motor, el PID es: 05. Entiendo que mi variable se verá así:

VAR Variable1 = CAN1 Data 0x7E0 (or is it 0x7E8?) [ bitA bitB]

Estoy atascado, porque no sé si debo usar la consulta o la respuesta CAN ID, y no sé qué bitA & BitB debería ser si quiero recuperar la temperatura del refrigerante del motor.

Sé que esto es inverosímil, pero Vector IT no puede ayudarme. ¿Hay alguna manera de que pueda aclarar una pregunta tan descabellada?

    
pregunta Adam

2 respuestas

0

¿Envías un mensaje CAN desde tu dispositivo Vector, entonces tu solicitud de CAN debe ser así?

ID -7E0 DLC - 8 D0-02 D1-01 D2-0C D3-D7 -0

    
respondido por el ganeshredcobra
1

UDS es un estándar cerrado, pero partes esenciales de él están disponibles en línea. Lo que probablemente desea es servicio UDS $ 22 : Leer datos por identificador . UDS es compatible con una estructura de cuadro CAN diferente, la más simple y la más utilizada es "cuadro único":

(imagentomadade hackaday )

Por lo tanto, esencialmente deberás enviar

0x7E0: 03 22 05 00 00 00 00 00
  |     |  |  \-/------------- DID (two bytes)
  |     |  \------------------ SID
  |     \--------------------- data lenght
  \--------------------------- CAN ID

y espere una respuesta con CAN ID 0x7E8. Sin embargo, la realidad suele ser más difícil que eso: muchas ECUs requerirán que envíe primero una solicitud de Control de sesión de diagnóstico , o incluso que responda al desafío Acceso de seguridad . Otros requerirán que esté presente una suma de comprobación en el último byte de datos. Es posible que tenga que experimentar bastante para que esto funcione en la ECU que tiene a mano.

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas