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
Rinho Zero IoT no tiene transceptor CAN: no puede leer fallas del vehículo.
1. Qué se obtiene
| Vehículo | Protocolo | Qué informa |
|---|---|---|
| Camión, colectivo, maquinaria, agro | J1939 | SPN (qué componente falla), FMI (cómo falla), ECU que lo reporta, ocurrencias y lámparas del tablero |
| Auto, camioneta, utilitario | OBD2 | El 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ículo | Protocolo esperado |
|---|---|
| Camión, maquinaria pesada, agro | J1939 |
| Auto, camioneta, utilitario liviano | OBDII |
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<| Campo | Valor | Significado |
|---|---|---|
| 1º | 1 | Habilita la lectura (de fábrica viene en 0) |
| 2º | 3 | Segundos sin ver un código para darlo por resuelto |
| 3º | 0 | Reservado (borrado en el vehículo, todavía sin efecto) |
| 4º | 1 | Reporte automático ante falla nueva o resolución |
| 5º | GP | Destino 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<| Respuesta | Significado |
|---|---|
RDTC0 | Leyendo el bus, sin fallas activas — resultado válido |
RDTC2;J:00:100:1:4;J:00:1761:1:12 | Dos fallas activas (camión) |
RDTC1;O:00:P0301:0:0 | Una falla activa (liviano) |
RDTCNA | La 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 reporteTres 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 configurado6. Interpretar los códigos
J1939
J:00:100:1:4La 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:
| FMI | Significado |
|---|---|
| 0 / 1 | Valor por encima / debajo del rango normal |
| 2 | Dato errático o intermitente |
| 3 / 4 | Corto a positivo / corto a masa |
| 5 / 6 | Circuito abierto / sobrecorriente |
| 7 | El sistema mecánico no responde |
| 12 | Componente dañado |
| 31 | La 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:0La ECU de motor (00) informa un fallo de encendido en el cilindro 1 (P0301).
| Letra | Sistema |
|---|---|
P | Motor y transmisión |
C | Chasis (frenos, suspensión, dirección) |
B | Carrocería (airbag, confort) |
U | Red 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ñal | Se activa cuando |
|---|---|
DTC00 | Hay al menos una falla activa |
DTC01 | Apareció una falla nueva |
DTC02 | Hay lámpara de tablero encendida (sólo J1939) |
DTC03 | Se 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 encendidaY 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:
- El protocolo no coincide con el vehículo —
>QCXCAN<:J1939en camión,OBDIIen liviano. - La lectura está deshabilitada —
>QDTC<respondeRDTCNA. Habilitar conSCXDTC. - La T del firmware es anterior a la 9 y el vehículo es liviano —
>QVR<. El soporte OBD2 entró en1.09.27.T9. - No pasó el ciclo de 30 segundos de OBD2 — esperar una vuelta más.
- El vehículo no tiene fallas activas —
RDTC0es un resultado correcto. Contrastar con el tablero o con un escáner. - 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ón | Estado |
|---|---|
| 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
- Comando CXDTC - Referencia completa de los comandos
- Reporte DF - Formato del reporte de fallas
- Comando CXCAN - Selección del protocolo del bus
- Comando ECU - Telemetría del motor