Volver al blog
Tutorial, CAN Bus, CXECU, Telemetría, ECU, Gestión de Flotas, J1939, OBD-II, Configuración, Rinho Telematics, Técnico
ES • EN • PT

Captura Personalizada de Datos CAN Bus con CXECU

Captura personalizada de datos CAN Bus con la herramienta CXECU de Rinho Telematics

🎓 Nivel: Avanzado - Este tutorial requiere conocimientos técnicos de sistemas CAN Bus, análisis de tramas hexadecimales y operaciones a nivel de bits.

¿Necesitas monitorear el uso del freno de mano en tu flota? ¿Querés saber cuándo los conductores activan el pedal de freno o el embrague? La herramienta CXECU de los dispositivos Rinho te permite configurar parsers dinámicos para capturar cualquier parámetro que el vehículo transmita por CAN Bus.

En este tutorial vas a aprender a capturar el estado del freno de mano del Fiat Cronos usando datos reales del bus CAN, configurar el dispositivo Rinho, y crear eventos automáticos cuando se active el freno.

🎯 Aplicación real: Usamos el freno de mano como caso de estudio con datos reales del Fiat Cronos, pero esta misma metodología se aplica a cualquier parámetro CAN: cinturones de seguridad, apertura de puertas, temperatura del aceite, presión de neumáticos, etc.

📖 Si aún no conocés los fundamentos de CAN Bus, te recomendamos leer primero ¿Qué es CANBUS y por qué es clave en la gestión de flotas?


El Problema: Monitorear el Freno de Mano

Imaginate este escenario real:

Tu flota de Fiat Cronos opera en zonas montañosas. Algunos conductores no están usando correctamente el freno de mano al estacionar en pendientes, lo que genera:

  • ⚠️ Riesgo de accidentes si el vehículo se mueve
  • 🔧 Desgaste prematuro de la transmisión
  • 📊 Falta de visibilidad sobre este comportamiento

La solución: Configurar el dispositivo Rinho para capturar el estado del freno de mano directamente desde el bus CAN y generar alertas automáticas cuando el conductor no lo use correctamente.

💡 Requisito: Este tutorial requiere dispositivos Rinho con módulo CAN Bus integrado, como el Rinho Spider IoT o Rinho Smart IoT. Estos dispositivos incluyen hardware especializado para conectarse al bus CAN del vehículo y procesar los mensajes en tiempo real.


¿Qué es CXECU?

CXECU es el módulo de configuración de parsers CAN de los dispositivos Rinho. Permite definir exactamente cómo interpretar los mensajes CAN que transmite el vehículo para extraer valores específicos.

Conceptos Clave

Componente Descripción
CXECU Parsers configurables para extraer datos de mensajes CAN
CXCAN Configuración global del bus (velocidad, protocolo)
Parser Regla que interpreta bits específicos de un mensaje CAN
Índices 28 slots disponibles (CXECU00-CXECU27) para configuraciones

El sistema tiene 28 índices predefinidos, y los índices 20-27 están reservados para parámetros personalizados:

20: custom.fuel_liters         - Combustible en litros
21: custom.fuel_milliliters    - Combustible en mililitros
22: custom.handbrake_status    - Freno de mano (0/1) ⭐
23: custom.brake_pedal_status  - Pedal de freno (0/1) ⭐
24: custom.accelerator_pct     - Acelerador personalizado (%)
25: custom.door_driver         - Puerta conductor (0/1)
26: custom.door_passenger      - Puerta pasajero (0/1)
27: custom.clutch_pedal_status - Pedal de embrague (0/1) ⭐

Tutorial Paso a Paso: Fiat Cronos

Vamos a configurar la captura del freno de mano del Fiat Cronos usando datos reales extraídos del bus CAN del vehículo.

🚗 Vehículo de prueba: Los datos presentados fueron obtenidos de un Fiat Cronos 1.3 Drive. Esta configuración debería funcionar en otros modelos de la familia Cronos, pero siempre recomendamos verificar los mensajes CAN de tu vehículo específico.

🔍 Nota sobre el análisis: Los datos que vas a ver a continuación fueron obtenidos usando el modo SCXCAN1,500K,LISTEN para capturar y analizar los mensajes del bus. Una vez identificados los parámetros, la configuración final usa SCXCAN1,500K,OBDII,29 para combinar parámetros estándar OBD-II con los personalizados de CXECU.

Paso 1: Análisis del Mensaje CAN

Primero, necesitamos entender cómo el vehículo transmite la información del freno de mano.

Después de analizar el bus CAN del Fiat Cronos con herramientas de sniffing en modo LISTEN, encontramos:

📊 Freno de Mano - Mensaje ID 0x256

Estado Byte 0 Bits Activos Valor Hex
Desactivado 00000000 Ninguno 0x00
Activado 00001000 Bit 3 0x08

Interpretación:

  • El mensaje con ID 0x256 se transmite continuamente en el bus
  • El Byte 0 (primer byte de los 8 bytes del mensaje) contiene el estado
  • El Bit 3 (máscara 0x08) indica si está activado (1) o desactivado (0)

Fórmula de extracción:

handbrake_status = (Byte_0 & 0x08) ? 1 : 0

Si aplicamos la máscara 0x08 al byte:

  • 0x08 & 0x08 = 0x08Activado (bit 3 = 1)
  • 0x00 & 0x08 = 0x00Desactivado (bit 3 = 0)

Paso 2: Configurar el Bus CAN

Antes de configurar el parser, necesitamos habilitar el bus CAN con la velocidad y protocolo correctos.

El Fiat Cronos usa un bus CAN de 500 Kbps con protocolo OBDII y CAN extendido de 29 bits:

>SCXCAN1,500K,OBDII,29<

📚 Ver documentación completa: Comando CXCAN

Desglose del comando:

  • 1 → Habilitar el módulo CAN
  • 500K → Velocidad de 500 Kbps (estándar en automóviles modernos)
  • OBDII → Protocolo OBD-II estándar
  • 29 → CAN ID extendido de 29 bits (en lugar del estándar de 11 bits)

Verificar la configuración:

>QCXCAN<

Respuesta esperada:

>RCXCAN1,500K,OBDII,29...

Paso 3: Configurar el Parser del Freno de Mano

Ahora vamos a configurar el parser en el índice 22 (reservado para custom.handbrake_status):

>SCXECU22E,256,3,1,1,0,0,1,BE,U<

📚 Ver documentación completa: Comando CXECU

Desglose detallado de cada parámetro:

Parámetro Valor Descripción
Índice 22 Slot para custom.handbrake_status
Estado E Enabled (habilitado)
CAN ID 256 ID del mensaje en hexadecimal (0x256)
Start Bit 3 Bit 3 del Byte 0 (posición 3 en el mensaje)
Length 1 Leer solo 1 bit
Factor 1 Multiplicador (sin conversión)
Offset 0 Suma (sin offset)
Min 0 Valor mínimo válido
Max 1 Valor máximo válido (0 o 1)
Endian BE Big Endian (orden de bytes Motorola)
Signed U Unsigned (sin signo)

Fórmula de conversión:

valor_final = (bit_extraído × 1) + 0 = bit_extraído

En este caso, como extraemos un solo bit, el valor final será 0 o 1.

Verificar la configuración:

>QCXECU22<

Respuesta esperada:

>RQCXECU22E,00000256,3,1,1.000,0.0,0,1,BE,U...

Paso 4: Consultar el Valor en Tiempo Real

Una vez configurado el parser, podemos consultar el estado actual del freno de mano:

>QECU22<

Respuestas posibles:

>RECU22,0...    // Freno de mano desactivado
>RECU22,1...    // Freno de mano activado

Capturando Más Parámetros del Cronos

Además del freno de mano, el Fiat Cronos transmite otros parámetros útiles por CAN Bus:

Pedal de Freno - ID 0x0FA

// Pedal de freno: Byte 0, Bits 3-2 (0x0C)
// Suelto: 0x80, Pisado: 0x8C
>SCXECU23E,0FA,2,2,1,0,0,3,BE,U<

Análisis de bits:

  • Byte 0 del mensaje 0x0FA
  • Bits 3-2 (máscara 0x0C)
  • Suelto: 0x80 (1000 0000) → bits [3:2] = 00
  • Pisado: 0x8C (1000 1100) → bits [3:2] = 11 (3 en decimal)

Pedal de Embrague - ID 0x1F0

// Embrague: Byte 0, Bits 7-6
// Suelto: 0x00, Medio: 0x40 (bit 6), Profundo: 0x80 (bit 7)
>SCXECU27E,1F0,6,2,1,0,0,3,BE,U<

Análisis de bits:

  • Byte 0 del mensaje 0x1F0
  • Bits 7-6 (2 bits)
  • Valores: 0 (suelto), 1 (medio), 2 (profundo)

Configuración Completa para los 3 Parámetros

// Configuración CAN Bus completa para Fiat Cronos
>SCXCAN1,500K,OBDII,29<

// Freno de mano (índice 22)
>SCXECU22E,256,3,1,1,0,0,1,BE,U<

// Pedal de freno (índice 23)
>SCXECU23E,0FA,2,2,1,0,0,3,BE,U<

// Pedal de embrague (índice 27)
>SCXECU27E,1F0,6,2,1,0,0,3,BE,U<

// Consultar valores
>QECU22<    // Freno de mano: 0 o 1
>QECU23<    // Pedal freno: 0 (suelto) o 3 (pisado)
>QECU27<    // Embrague: 0 (suelto), 1 (medio), 2 (profundo)

Configuración de Eventos con Variables UV y Reglas RL

Los valores capturados con CXECU se pueden usar en variables universales (UV) y reglas RL del motor de eventos para crear lógica condicional y generar alertas automáticas cuando se detecten cambios en los parámetros monitoreados.

Consultar Valores ECU con QECU

Los valores de CXECU están disponibles mediante el comando QECU[idx]:

// Consultar freno de mano (índice 22)
>QECU22<
>RECU22,1...    // 1 = activado

// Consultar pedal de freno (índice 23)
>QECU23<
>RECU23,3...    // 3 = pisado a fondo

Usar ECU en Variables UV con Fórmulas

Las variables UV (User Variables) pueden evaluar expresiones que incluyen valores ECU. La sintaxis es:

📚 Ver documentación completa: Comando UV

>SUV[idx][tipo] comando,inicio,fin,min,max<

Tipos disponibles:

  • F → Float (números con decimales)
  • U → Unsigned integer (enteros sin signo)
  • S → Signed integer (enteros con signo)

Ejemplos para el Fiat Cronos:

// UV00 = 1 cuando freno de mano está activado (QECU22 >= 1)
>SUV00FQECU22%d:30,7,0,0,1,999<

// UV01 = 1 cuando pedal de freno está pisado (QECU23 >= 3)
>SUV01FQECU23%d:30,7,0,0,3,999<

// UV02 = 1 cuando embrague está presionado (QECU27 >= 1)
>SUV02FQECU27%d:30,7,0,0,1,999<

Explicación de la sintaxis:

  • SUV00F → Configurar UV00 con tipo Float (sin espacio entre F y el comando)
  • QECU22%d:30,7 → Consultar ECU índice 22, formato decimal, timeout 30s, desde el carácter 7
  • 0,0 → Posición inicio 0, longitud 0 (tomar respuesta completa)
  • 1,999 → Rango: min=1 (inclusive), max=999 (exclusivo)
    • UV = 1 cuando el valor está en el rango [min, max)
    • UV = 0 cuando el valor está fuera del rango

Crear Reportes de Posición con Reglas RL

Una vez configuradas las UV, podés usarlas en reglas RL para generar reportes de posición automáticos:

📚 Ver documentación completa: Comando RL

// Regla: Enviar reporte de posición cuando se active el freno de mano
>SRL50E;TRG=UV00+;ACC={GCQ55H}<

Explicación:

  • SRL50E → Regla 50 habilitada
  • TRG=UV00+ → Disparar cuando UV00 pasa de 0 a 1 (flanco ascendente)
  • ACC={GCQ55H} → Generar reporte de posición con código 55 y prioridad alta (H)

📚 Comando para generar reportes: GCQ - Generación de Reportes

Ejemplo Completo: Sistema de Monitoreo del Freno de Mano

Archivo: cronos_handbrake_events.txt

// ================================================
// Sistema de Monitoreo del Freno de Mano
// Usa CXECU + UV + Reglas RL
// ================================================

// 1. Configurar bus CAN
>SCXCAN1,500K,OBDII,29<

// 2. Configurar parser del freno de mano
>SCXECU22E,256,3,1,1,0,0,1,BE,U<

// 3. Crear variable UV00 que evalúa si freno está activado
>SUV00FQECU22%d:30,7,0,0,1,999<

// 4. Regla: Evento cuando se ACTIVA el freno de mano
>SRL50E;TRG=UV00+;ACC={GCQ55H}<

// 5. Regla: Evento cuando se DESACTIVA el freno de mano
>SRL51E;TRG=UV00-;ACC={GCQ56H}<

// Verificar configuración
>QUV00<        // Ver estado de UV00
>QECU22<       // Ver valor del parser

Ventajas de este método:

  • Mayor flexibilidad: Podés combinar múltiples condiciones
  • Eventos personalizados: Envío de códigos específicos con GCQ
  • Motor de reglas nativo: Usa el sistema RL del firmware
  • Mejor performance: Evaluación más eficiente en el dispositivo

Cargar la Configuración

Los comandos se pueden enviar al dispositivo por SMS, plataforma web o terminal serial (USB/UART):

>SCXCAN1,500K,OBDII,29<
>SCXECU22E,256,3,1,1,0,0,1,BE,U<
>SUV00FQECU22%d:30,7,0,0,1,999<
>SRL50E;TRG=UV00+;ACC={GCQ55H}<
>SRL51E;TRG=UV00-;ACC={GCQ56H}<

Comandos de Gestión

Consultar Configuración

>QCXCAN<         // Consultar configuración del bus CAN
>QCXECU[idx]<    // Consultar parser específico (ej: QCXECU22)
>QECU[idx]<      // Consultar valor actual (ej: QECU22)

📚 Documentación: QCXCANQCXECUQECU

Respuestas posibles para QCXECU:

// Parser habilitado
>RQCXECU22E,00000256,3,1,1.000,0.0,0,1,BE,U...

// Parser deshabilitado
>RQCXECU22D,00000256,3,1,1.000,0.0,0,1,BE,U...

// No configurado
>RQCXECU22,NOTCFG,USE:SCXECU22enable,can_id,start,len,factor,offset,min,max,endian,sign...

Habilitar/Deshabilitar Rápido

>SCXECU22E<    // Habilitar parser ya configurado
>SCXECU22D<    // Deshabilitar parser temporalmente

Esto es ideal para:

  • 🔧 Mantenimiento: Deshabilitar monitoreo temporalmente
  • 🔍 Diagnóstico: Aislar parámetros problemáticos
  • Optimización: Reducir carga del procesador

Limpiar Configuraciones

>CCXECU22<    // Limpiar parser específico
>CCXECU99<    // Limpiar TODOS los parsers

📚 Ver documentación completa: Comando CXECU


Flujo de Trabajo Recomendado

1. Análisis Inicial (Modo LISTEN)

Si no tenés la información del bus CAN del vehículo, primero necesitás hacer un análisis en modo LISTEN para identificar los mensajes:

a) Configurar el bus CAN en modo escucha (LISTEN):

>SCXCAN1,500K,LISTEN<

b) Habilitar logging de tramas CAN (por terminal serial):

>SDB0+CAN<

📚 Ver documentación completa: Comando DB

Esto mostrará todas las tramas CAN en el terminal serial para análisis.

💡 Nota importante: El modo LISTEN es solo para análisis. Permite capturar todos los mensajes del bus CAN sin interferir con el vehículo.

c) Usar herramientas de análisis CAN (opcional):

  • Hardware: Adaptador OBD-II CAN (ELM327, CANable, PCAN)
  • Software: CANalyzer, Wireshark, SavvyCAN

d) Identificar mensajes:

  • Activar/desactivar el freno de mano repetidamente
  • Observar qué mensaje CAN cambia de valor
  • Anotar el ID, byte y bit específico

e) Una vez identificados los mensajes, cambiar a OBD-II:

// Cambiar de LISTEN a OBDII para uso normal
>SCXCAN1,500K,OBDII,29<

⚠️ Importante: Después del análisis, siempre configurar con OBDII,29 para uso en producción. Esto permite:

  • Capturar parámetros estándar OBD-II (RPM, velocidad, temperatura, etc.)
  • Capturar parámetros personalizados con CXECU (freno de mano, pedales, etc.)

2. Configurar el Parser

Con la información del análisis, configurar el parser correspondiente:

>SCXECU22E,[ID],[bit],[length],1,0,0,1,BE,U<

3. Verificar

>QCXECU22<    // Verificar configuración del parser
>QECU22<      // Verificar valores en tiempo real

Activar y desactivar el freno de mano físicamente y observar los valores.

4. Configurar Eventos con UV y RL

Una vez verificado que el parser funciona correctamente, configurar variables UV y reglas RL para generar eventos automáticos (ver sección Configuración de Eventos con Variables UV y Reglas RL).

5. Ajustar si es Necesario

Si los valores no son correctos, revisar:

Aspecto Verificación
Baudrate Debe coincidir con el vehículo (500K es común en autos)
CAN ID ID hexadecimal correcto del mensaje
Start bit Posición exacta del bit dentro del mensaje
Length Cantidad de bits a leer (1 para booleanos)
Endianness BE (Big Endian) es común en CAN automotriz
Min/Max Rango válido para filtrar ruido

Troubleshooting

Problemas Comunes

Error Causa Solución
RSCXECU,NOCAN Hardware sin CAN o deshabilitado Verificar hardware y conexiones físicas
RCXCAN NA Bus CAN no disponible Verificar conexiones CAN-H/CAN-L en OBD-II
Valores no actualizan ID o baudrate incorrecto Verificar ID y velocidad del bus
Valores aleatorios Start bit o length incorrecto Revisar posición exacta del bit
Siempre 0 o siempre 1 Bit incorrecto o mensaje no transmitido Usar modo LISTEN y analizar tráfico

Ejemplo Real: Debugging del Freno de Mano

Problema: El valor de QECU22 siempre devuelve 0, incluso con el freno activado.

Diagnóstico:

  1. Verificar que el mensaje se transmite:

    // Activar logging de CAN (si está disponible)
    // Buscar mensajes con ID 0x256
    
  2. Verificar el bit correcto:

    • El freno de mano usa el bit 3 (máscara 0x08)
    • Start bit debe ser 3, no 0
  3. Verificar la configuración:

    >QCXECU22<
    // Debe mostrar: >RQCXECU22E,00000256,3,1,...
    //                                     ^ start bit debe ser 3
    
  4. Probar manualmente:

    • Activar y desactivar el freno repetidamente
    • Consultar >QECU22< después de cada cambio
    • Debe alternar entre 0 y 1

¿Cuándo usar CXECU?

⚠️ Importante: CXECU está diseñado para capturar mensajes CAN que se transmiten continuamente en el bus (broadcast) que no están incluidos en los protocolos estándar.

Casos de uso ideales:

Protocolo Uso con CXECU Descripción
J1939 ✅ Ideal Vehículos pesados - datos continuos del motor y transmisión
LISTEN ✅ Solo análisis Modo de escucha para identificar mensajes (no para producción)
PLAIN ✅ Ideal CAN básico sin protocolo específico
OBD-II ✅ Complementario ⭐ Para mensajes propietarios que el protocolo estándar no interpreta

El Caso del Fiat Cronos

El Fiat Cronos es un ejemplo perfecto de OBD-II + CXECU:

  • OBD-II estándar captura: RPM, velocidad, temperatura del motor, nivel de combustible estándar, códigos de error (DTC), etc.
  • CXECU personalizado captura: Freno de mano (ID 0x256), pedal de freno (ID 0x0FA), pedal de embrague (ID 0x1F0)

Estos últimos son mensajes propietarios de Fiat que el protocolo OBD-II no está diseñado para interpretar. Por eso la configuración es:

>SCXCAN1,500K,OBDII,29<  // Base OBD-II + CXECU personalizados

De esta forma obtenés lo mejor de ambos mundos: parámetros estándar + parámetros personalizados.


Conclusión

Con CXECU pudiste aprender a:

Analizar mensajes CAN reales del Fiat Cronos ✅ Configurar un parser para extraer el estado del freno de mano ✅ Crear eventos automáticos que alertan cuando se activa el freno ✅ Capturar múltiples parámetros (freno, embrague, pedales)

Esta misma metodología se puede aplicar a cualquier vehículo que transmita datos por CAN Bus. Solo necesitás:

  1. 🔍 Analizar el bus CAN con herramientas de sniffing
  2. 📊 Identificar el mensaje, byte y bit del parámetro deseado
  3. ⚙️ Configurar el parser con SCXECU
  4. 🚀 Crear eventos para automatizar acciones

¿Necesitas Ayuda con tu Flota?

Si tenés un vehículo específico y necesitás ayuda para configurar los parsers CAN, contactanos. Nuestro equipo técnico puede asistirte con:

  • 📋 Configuración de parsers para tu modelo de vehículo
  • 🔍 Análisis del bus CAN y extracción de parámetros
  • 🛠️ Soporte técnico especializado para casos complejos
  • 📚 Documentación personalizada para tu flota

Con los dispositivos Rinho Spider IoT y Rinho Smart IoT, llevá la telemetría vehicular al siguiente nivel.

📚 Para documentación técnica completa, visitá nuestra guía de comandos CANBUS en la documentación oficial.