Skip to Content
Notas de AplicaciónFallas de la ECU

Leer fallas de la ECU (DTC)

Esta nota muestra cómo configurar el equipo para que informe qué fallas tiene el vehículo —los mismos códigos que muestra un escáner de taller— y cómo integrarlos en una plataforma.

Hasta ahora el equipo informaba si el vehículo tenía fallas y cuántas: el equivalente a la luz de avería del tablero. Con el módulo DTC informa cuáles son.

Requiere firmware de la serie 1.09.27, que al momento de publicarse esta nota es una versión T (preliberación): se entrega por FOTA bajo pedido. El soporte OBD2 entró en la T9; con una T anterior el equipo lee solamente J1939. Verificar con >QVR< antes de empezar.

Compatibilidad

💾Firmware:v1.09.27
SP-IOT
SM-IOT

Rinho Zero IoT no tiene transceptor CAN: no puede leer fallas del vehículo.


1. Qué se obtiene

VehículoProtocoloQué informa
Camión, colectivo, maquinaria, agroJ1939SPN (qué componente falla), FMI (cómo falla), ECU que lo reporta, ocurrencias y lámparas del tablero
Auto, camioneta, utilitarioOBD2El código estándar completo (P0301, P0420, U0100) y la ECU que lo reporta

Todo llega por el protocolo normal del equipo (UDP/TCP/SMS), con cola, reintentos y confirmación. No requiere hardware adicional: usa la conexión CAN que el equipo ya tiene, y funciona igual con el accesorio CANBUS Contactless (inductivo).


2. Verificar el protocolo del bus

Es el paso que más problemas evita. El protocolo configurado tiene que coincidir con el vehículo:

>QCXCAN<
VehículoProtocolo esperado
Camión, maquinaria pesada, agroJ1939
Auto, camioneta, utilitario livianoOBDII

Si el protocolo no coincide con el vehículo, el módulo informa siempre cero fallas, aunque el tablero esté encendido. Es la causa más frecuente de “no funciona”.


3. Habilitar la lectura

Un solo comando pone todo en marcha:

>SCXDTC1,3,0,1,GP<
CampoValorSignificado
1Habilita la lectura (de fábrica viene en 0)
3Segundos sin ver un código para darlo por resuelto
0Reservado (borrado en el vehículo, todavía sin efecto)
1Reporte automático ante falla nueva o resolución
GPDestino del reporte: GPRS principal

Verificación: >QCXDTC<RCXDTC1,3,0,1,GP

Para la puesta a punto conviene usar LOG como destino (>SCXDTC1,3,0,1,LOG<): los reportes quedan guardados en el equipo y se bajan todos juntos con >QDL+< al final del recorrido, sin depender de que el servidor esté escuchando. Una vez validado, se pasa a GP.

Con el primer campo en 0 (default de fábrica) el módulo queda completamente inactivo: no reserva memoria ni toca el bus.


4. Consultar el estado

>QDTC<
RespuestaSignificado
RDTC0Leyendo el bus, sin fallas activas — resultado válido
RDTC2;J:00:100:1:4;J:00:1761:1:12Dos fallas activas (camión)
RDTC1;O:00:P0301:0:0Una falla activa (liviano)
RDTCNALa lectura está deshabilitada

En OBD2 el equipo consulta a la ECU cada 30 segundos: después de habilitar hay que esperar una vuelta antes de dar por buena una respuesta en cero. En J1939 la ECU emite las fallas por su cuenta y la lectura es inmediata.


5. Lo que recibe la plataforma

Con autorpt=1, cada vez que aparece una falla nueva o se resuelven todas llega un reporte DF:

>RDF00020826143512;2;J:00:100:1:4;J:00:1761:1:12< │ │ │ │ │ │ │ └─ lista de fallas │ │ └──────── cantidad activa (0 = se resolvieron todas) │ └─────────────── fecha y hora DEL EVENTO (ddmmaa hhmmss) └────────────────── número de reporte

Tres cosas que simplifican la integración:

  • Cada reporte es una foto completa. No hay que reconstruir estado del lado del servidor.
  • La fecha y hora son las del momento de la falla, no las del envío: si el vehículo estuvo sin cobertura, el reporte espera en la cola y al recuperar señal informa cuándo ocurrió realmente.
  • Cantidad en cero = resolución. Cuando desaparece la última falla llega el aviso.

También se puede pedir en cualquier momento, sin esperar a que haya una falla:

>QDF< // respuesta directa por el canal que preguntó >GDF00H< // encola el reporte al destino configurado

6. Interpretar los códigos

J1939

J:00:100:1:4

La ECU de motor (00) informa que la presión de aceite (SPN 100) está por debajo del rango normal (FMI 1), y ocurrió 4 veces.

El FMI distingue el tipo de falla, y esa diferencia cambia el diagnóstico:

FMISignificado
0 / 1Valor por encima / debajo del rango normal
2Dato errático o intermitente
3 / 4Corto a positivo / corto a masa
5 / 6Circuito abierto / sobrecorriente
7El sistema mecánico no responde
12Componente dañado
31La condición existe, sin más detalle

Presión de combustible con FMI 1 es presión baja real (filtro, bomba). Con FMI 5 es circuito abierto: se desconectó el sensor o se cortó un cable.

SPN de referencia: 100 presión de aceite · 110 temperatura de refrigerante · 94 presión de combustible · 190 RPM · 168 tensión de batería · 651-656 inyectores 1 a 6 · 1761 nivel de AdBlue/urea · 3226 sensor NOx (SCR).

OBD2

O:00:P0301:0:0

La ECU de motor (00) informa un fallo de encendido en el cilindro 1 (P0301).

LetraSistema
PMotor y transmisión
CChasis (frenos, suspensión, dirección)
BCarrocería (airbag, confort)
URed de comunicación entre módulos

Los dos últimos campos van en cero: FMI y ocurrencias son campos de J1939, OBD2 no los transmite.

Los códigos salen en formato estándar (SAE J1939 y J2012). Las descripciones en texto (“Catalyst System Efficiency…”) se resuelven en la plataforma con las tablas públicas de la norma, igual que en el resto del mercado.


7. Reaccionar en el vehículo, sin pasar por el servidor

Las fallas son disparadores del motor de eventos: se combinan con ignición, velocidad, entradas o geocercas como cualquier otra señal.

SeñalSe activa cuando
DTC00Hay al menos una falla activa
DTC01Apareció una falla nueva
DTC02Hay lámpara de tablero encendida (sólo J1939)
DTC03Se limpiaron todas las fallas
// Falla nueva → reporte inmediato al servidor >SRL05E;TRG=DTC01+;ACC={GDF00H}< // Lámpara de tablero encendida → salida a un buzzer en cabina >SRL07E;TRG=DTC02+;ACC={SSSXP0011}< // Falla nueva con la ignición puesta → aviso por SMS al supervisor >SRL08E;TRG=DTC01+;CND=IGN;ACC={GTX01H;@SM0;TXT=Falla activa en marcha}<

Para condiciones numéricas están las funciones EVAL:

>EVAL DTCN()< // cantidad de fallas activas >EVAL DTCH(100)< // 1 si la presión de aceite está en falla (J1939) >EVAL DTC(2)< // 1 si hay lámpara de tablero encendida

Y el token 'DTC' inserta la lista completa en cualquier reporte de usuario:

>SUC00 $ID fallas:'DTC'<

8. Si no aparece ninguna falla

En orden, lo más frecuente primero:

  1. El protocolo no coincide con el vehículo>QCXCAN<: J1939 en camión, OBDII en liviano.
  2. La lectura está deshabilitada>QDTC< responde RDTCNA. Habilitar con SCXDTC.
  3. La T del firmware es anterior a la 9 y el vehículo es liviano>QVR<. El soporte OBD2 entró en 1.09.27.T9.
  4. No pasó el ciclo de 30 segundos de OBD2 — esperar una vuelta más.
  5. El vehículo no tiene fallas activasRDTC0 es un resultado correcto. Contrastar con el tablero o con un escáner.
  6. La ECU no publica fallas — no todas las emiten en el bus (J1939) ni responden al Mode 03 (OBD2). Se confirma mirando si llegan otros datos del motor (RPM, temperatura) con ECU.

Si las fallas aparecen en >QDTC< pero no llega ningún reporte: revisar el 4º campo de SCXDTC (tiene que estar en 1) y el 5º, el destino. Con LOG el reporte no sale por la red: queda en el equipo y se baja con >QDL+<.


9. Alcance actual

FunciónEstado
Fallas activas J1939, una o varias ECU, uno o varios códigos
Fallas activas OBD2, una o varias ECU
Reporte automático, a demanda y por regla
Señales, funciones EVAL y token de plantilla
Borrado de la lista del equipo (CDTC)
Borrado de fallas en el vehículo (DM11 / Mode 04)❌ Previsto
Fallas históricas o pendientes (DM2 / Mode 07)❌ Previsto
Lámparas de tablero en OBD2❌ Sólo J1939
DTCH() sobre códigos OBD2❌ Sólo J1939 (busca por SPN)

Límites: hasta 32 fallas simultáneas en la tabla del equipo y unas 15 por trama (la cantidad informada siempre es la real). En J1939 el módulo es escucha pura y no transmite nada al bus; en OBD2 consulta cada 30 segundos, igual que un escáner conectado al conector de diagnóstico.


Ver También

Última actualización