Un caso practico
Después de tanta teoría vamos a aplicar nuestros conocimientos en un caso practico de una avería provocada.
Se trata de desconectar uno de los sensores del motor. El propio vehículo detecta la falta del mismo y nos indica dicha incidencia a través del testigo
del cuadro de mandos MIL (malfunction indicator lamp) y desde la pantalla multifunción.
Se tomará la lectura de la ECU para determinar el código DTC (diagnostic trouble codes) o códigos de error que nos estrega el propio vehículo. Tras
ello procederemos a su borrado.
Del mismo modo también se podrá tomar lectura de los valores en algunos de los sensores del motor.
El sensor elegido es uno de los que están más a mano. Se encuentra en la toma de admisión justo enfrente nada más abrir el capó. Ver detalles en la
foto porque está próximo a otro sensor y a un grupo de actuadores.
Desconexión del captador de presión de aire de admisión.
Información de la avería que se muestra en el indicador MIL y la pantalla multifunción el texto “SIST. ANTIPOLUCIÓN DEFECTUOSO”.
Una vez subsanada la avería y limpiado el error desaparece la indicación MIL.
Una vez retirado el cenicero podremos retirar la cubierta de goma que nos da acceso al conector de diagnosis.
Conexión del circuito interfase entre el conector de diagnosis OBD y el ordenador vía RS232.
Acceso al conector OBD.
El conector de diagnosis OBD se encuentra oculto tras una pequeña alfombrilla de goma debajo del cenicero. Retirado el cenicero y con una ligera
presión sobre el centro de la alfombrilla se levanta sin problemas.
Procederemos a enchufar el conector del OBD que nos servirá de línea de comunicaciones y como medio para alimentar el interfase.
El segundo cable de interfase es la salida que nos unirá con el ordenador a través del puerto RS232.
Toma de datos.
Una vez conectado todo y con el vehículo con el contacto puesto o
arrancado, podremos empezar a curiosear a nuestro pequeñín.
Desde la aplicación de Vial Basic abrimos el puerto COM1 y preguntamos
algo sencillito:
7DFh 02h 01h 05h
   (Temperatura motor)
        7DFh  
ID para preguntar a la ECU.
02h 
Nº de bytes que componen la pregunta.
01h 
Valor MODE a preguntar.
05h 
Código PID que se pregunta.
Y nos responde:
7E8h 03h 41h 05h 5Ah
        7E8h  
ID respuesta ECU.
03h 
Nº de bytes que componen la respuesta.
41h 
Mismo valor del MODE que se preguntó  
sumándole 40h
05h 
Código PID que se preguntó.
5Ah 
Valor del código PID.
Aplicando la fórmula (A-40) según especifica SAE J1979 al PID que se
preguntó el resultado será:
5Ah -> 90d;
90-40=50ºC; 
La temperatura del motor es de 50ºC.
Nota:
Todos los valores en la petición y respuesta son en hexadecimal. En la
aplicación de Visual Basic los valores mostrados en amarillo
correspondientes a “nº datos” y “MODE” solo hay que introducir un dígito
(el 0 se omite).
La segunda columna en el apartado “Response” se puede ver el dígito “8”
que corresponde al valor LEN de la norma CAN-BUS, es decir, al tamaño real
del paquete de información.
Otra más:
7DFh 02h 01h 0Fh
   (Temperatura del aire)
        7DFh  
ID para preguntar a la ECU.
02h 
Nº de bytes que componen la pregunta.
01h 
Valor MODE a preguntar.
0Fh 
Código PID que se pregunta.
Y nos responde:
7E8h 03h 41h 0Fh 45h
        7E8h  
ID respuesta ECU.
03h 
Nº de bytes que componen la respuesta.
41h 
Mismo valor del MODE que se preguntó  
sumándole 40h
0Fh 
Código PID que se preguntó.
45h 
Valor del código PID.
Coincide la misma fórmula que en el caso anterior (A-40) el resultado será:
45h -> 69d;
69-40=29ºC; 
La temperatura del aire es de 29ºC.
Vamos a complicarlo un poquito.
Según el estandar OBD (SAE J1979) hay definidos una gran cantidad de PIDs
que podemos consultar en el vehículo, pero no tienen porqué estar todos en
cada uno de los vehículos.
Según modelo no es relevante el consultar sensores o elementos que pueden
carecen de ellos, por esto hay definidos una serie de PIDs que nos informan
de cuales son los parámetros u otros PIDs que podemos consultar en un
vehículo.
En mi caso sería lo siguiente:
7DFh 02h 01h 00h
   (PIDs que se pueden consultar)
        7DFh  
ID para preguntar a la ECU.
02h 
Nº de bytes que componen la pregunta.
01h 
Valor MODE a preguntar.
00h 
Código PID que se pregunta.
Y nos responde:
7E8h 06h 41h 00h 98h 3Bh 40h 11h
        7E8h  
ID respuesta ECU.
06h 
Nº de bytes que componen la respuesta.
41h 
Mismo valor del MODE que se preguntó  
sumándole 40h
00h 
Código PID que se preguntó.
98h 
Valor del código PID.
3Bh 
Valor del código PID.
40h 
Valor del código PID.
11h 
Valor del código PID.
Siguiendo el tutorial de la wiki deducimos lo siguiente:
0 = no soportado.
1 = soportado.
9       
8
3
   B
4        0
1
1
                  1001   1000       0011   1011         0100   0000   0001    0001               
  Nº PID      01..04  05...     ..0B 0C 0D.0F 10  .12..     ....   ...1C   ...20                                        
Diferentes trazas durante la toma de datos.
Mode
PID
   Description
    Min value
      Max value      Units
     Formula     
  01h 
00h 
    PIDs supported [01 - 20]            
Bit encoded [A7..D0] ==
[PID 0x01..PID 0x20]
  01h 
01h 
    Monitor status since DTCs cleared.           
Bit encoded.
   (Includes malfunction indicator lamp (MIL) status and number of DTCs.)
  01h
04h
    Calculated engine load value
0
100 
%
A*100/255
  01h
05h
    Engine coolant temperature
-40
215
°C
A-40
  01h
0Bh
    Intake manifold absolute pressure
0
255
kPa
A
  01h
0Ch
    Engine RPM
0
16,383.75
rpm
((A*256)+B)/4
  01h
0Dh
    Vehicle speed
0
255
km/h
A
  01h
0Fh
    Intake air temperature
-40
215
°C
A-40
  01h
10h
    MAF air flow rate
0
655.35
grams/sec
((A*256)+B) / 100
  01h
12h
    Commanded secondary air status
Bit encoded.
  01h
1Ch
    OBD standards this vehicle conforms to
Bit encoded.
  01h 
20h 
    PIDs supported [21 - 40]            
Bit encoded [A7..D0] ==
[PID 0x21..PID 0x40]
  01h
21h
    Distance traveled with mailfuntion
0
65,535
km
(A*256)+B
  01h
23h
    Fuel Rail Presure
0
655,350
kPa
((A*256)+B)*10
PIDs soportados por el Peugeot 308 Confort 1.6 HDI. Al realizar la consulta a través de llamada
 del PID20h nos informa que hay dos nuevos PIDs más que son accesibles, estos son el 21h y 23h.
Consulta de errores.
A continuación se solicitará el código DTC registrado en el vehículo al producirse una incidencia. Para ello se simulará una avería en el captador de
presión de aire de admisión. Con la sola desconexión, el vehículo detectará la ausencia del mismo y mostrará sobre el cuadro de mandos y la pantalla
multifunción el aviso de una anomalía.
Dentro de los diez tipos de MODE que se describen en el estandar OBD hay que utilizar el 03h (mostrar códigos erróneos).
7DFh 01h 03h   
     (Consulta DTCs)
        7DFh  
ID para preguntar a la ECU.
01h 
Nº de bytes que componen la pregunta.
03h 
Valor MODE a preguntar.
Y nos responde:
7E8h 04h 43h 01h 02h 38h
        7E8h  
ID respuesta ECU.
04h 
Nº de bytes que componen la respuesta.
43h 
Mismo valor del MODE que se preguntó sumándole 40h
01h 
Valor codificado DTC.
02h 
Valor codificado DTC.
38h 
Final DTC.
Cada código de error (DTC) requiere de 2 bytes para describirle. En caso de tener más de un código de error se tomarían lecturas sucesivas.
Seguiremos las indicaciones de la wiki para su decodificación.
El primer carácter se determina por los dos bit más significativos del primer byte:
A7 A6    First DTC character   
-- --    -------------------
0  0    P - Powertrain
 0  1    C - Chassis
01h =
00
000001d
P
 1  0    B - Body
 1  1    U - Network
El segundo carácter está definido por:
A5 A4    Second DTC character   
-- --    --------------------
0  0    0
 0  1    1
01h = 00
00
0001d
0
 1  0    2
 1  1    3
El tercer carácter es un número definido por:
A3 A2 A1 A0    Third DTC character  
-- -- -- --    -------------------
 0  0  0  0    0
0  0  0  1    1
 0  0  1  0    2
 0  0  1  1    3
 0  1  0  0    4
 0  1  0  1    5
 0  1  1  0    6
 0  1  1  1    7
01h = 0000
0001
d
1
 1  0  0  0    8
 1  0  0  1    9
 1  0  1  0    A
 1  0  1  1    B
 1  1  0  0    C
 1  1  0  1    D
 1  1  1  0    E
 1  1  1  1    F
El cuarto y quito son definidos del mismo modo que el tercero usando el siguiente byte B7..B4 y B3..B0:
B3 B2 B1 B0    Four DTC character   
-- -- -- --    -------------------
0  0  0  0    0
02h =
0000
0010d
0
 0  0  0  1    1      
 0  0  1  0    2
 ......
B3 B2 B1 B0    Five DTC character   
-- -- -- --    -------------------
 0  0  0  0    0
02h = 0000
0010
d
2
 0  0  0  0    1
0  0  1  0    2
 ......
El código resultante es el
P0102
, buscando en San Google nos informa de lo siguiente: “
Falla OBDII P0102 Genéricos - Sensor masa/volumen aire -
circuito entrada baja
”, exactamente el captador que tenemos desconectamos.
Bueno, ya estamos terminando. Después de haber sido chicos malos, hay que dejar el vehículo en perfecto estado de revisión (lo digo por la
parienta). Lo primero es poner en servicio el captador que desconectamos y seguidamente borraremos la indicación de avería.
Para eliminar la indicación y valores de memoria de la incidencia hay que utilizar el MODE 04h:
7DFh 01h 04h   
     (Borrado DTCs)
        7DFh  
ID para preguntar a la ECU.
01h 
Nº de bytes que componen la pregunta.
04h 
Valor MODE a preguntar.
Y nos responde:
7E8h 01h 44h
        7E8h  
ID respuesta ECU.
01h 
Nº de bytes que componen la respuesta.
44h 
Mismo valor del MODE que se preguntó sumándole 40h
Para asegurarnos que realmente lo ha borrado podemos preguntar de nuevo con el MODE 03h:
7DFh 01h 03h   
     (Consulta DTCs)
Y nos responde:
7E8h 02h 43h 00h
Perfecto, todo correcto y las indicaciones han sido borradas. Ya podemos ir a la cama con la satisfacción de haber echo un buen trabajo.
Bricos Peugeot 308