Voltar ao blog
Tutorial, CAN Bus, CXECU, Telemetria, ECU, Gestão de Frotas, J1939, OBD-II, Configuração, Rinho Telematics, Técnico
ES • EN • PT

Captura Personalizada de Dados CAN Bus com CXECU

Captura personalizada de dados CAN Bus com a ferramenta CXECU da Rinho Telematics

🎓 Nível: Avançado - Este tutorial requer conhecimentos técnicos de sistemas CAN Bus, análise de tramas hexadecimais e operações a nível de bits.

Você precisa monitorar o uso do freio de mão na sua frota? Quer saber quando os condutores ativam o pedal de freio ou a embreagem? A ferramenta CXECU dos dispositivos Rinho permite configurar parsers dinâmicos para capturar qualquer parâmetro que o veículo transmita por CAN Bus.

Neste tutorial você aprenderá a capturar o estado do freio de mão do Fiat Cronos usando dados reais do bus CAN, configurar o dispositivo Rinho, e criar eventos automáticos quando o freio for ativado.

🎯 Aplicação real: Usamos o freio de mão como caso de estudo com dados reais do Fiat Cronos, mas esta mesma metodologia se aplica a qualquer parâmetro CAN: cintos de segurança, abertura de portas, temperatura do óleo, pressão dos pneus, etc.

📖 Se ainda não conhece os fundamentos do CAN Bus, recomendamos ler primeiro O que é CANBUS e por que é fundamental na gestão de frotas?


O Problema: Monitorar o Freio de Mão

Imagine este cenário real:

Sua frota de Fiat Cronos opera em áreas montanhosas. Alguns condutores não estão usando corretamente o freio de mão ao estacionar em declives, o que gera:

  • ⚠️ Risco de acidentes se o veículo se mover
  • 🔧 Desgaste prematuro da transmissão
  • 📊 Falta de visibilidade sobre este comportamento

A solução: Configurar o dispositivo Rinho para capturar o estado do freio de mão diretamente do bus CAN e gerar alertas automáticos quando o condutor não o usar corretamente.

💡 Requisito: Este tutorial requer dispositivos Rinho com módulo CAN Bus integrado, como o Rinho Spider IoT ou Rinho Smart IoT. Estes dispositivos incluem hardware especializado para conectar-se ao bus CAN do veículo e processar as mensagens em tempo real.


O que é CXECU?

CXECU é o módulo de configuração de parsers CAN dos dispositivos Rinho. Permite definir exatamente como interpretar as mensagens CAN que o veículo transmite para extrair valores específicos.

Conceitos Principais

Conceito Descrição
CXECU Parsers configuráveis para extrair dados de mensagens CAN
CXCAN Configuração global do bus (velocidade, protocolo)
Parser Regra que interpreta bits específicos de uma mensagem CAN
Índices 28 slots disponíveis (CXECU00-CXECU27) para configurações

O sistema tem 28 índices predefinidos, e os índices 20-27 estão reservados para parâmetros personalizados:

20: custom.fuel_liters         - Combustível em litros
21: custom.fuel_milliliters    - Combustível em mililitros
22: custom.handbrake_status    - Freio de mão (0/1) ⭐
23: custom.brake_pedal_status  - Pedal de freio (0/1) ⭐
24: custom.accelerator_pct     - Acelerador personalizado (%)
25: custom.door_driver         - Porta motorista (0/1)
26: custom.door_passenger      - Porta passageiro (0/1)
27: custom.clutch_pedal_status - Pedal de embreagem (0/1) ⭐

Tutorial Passo a Passo: Fiat Cronos

Vamos configurar a captura do freio de mão do Fiat Cronos usando dados reais extraídos do bus CAN do veículo.

🚗 Veículo de teste: Os dados apresentados foram obtidos de um Fiat Cronos 1.3 Drive. Esta configuração deve funcionar em outros modelos da família Cronos, mas sempre recomendamos verificar as mensagens CAN do seu veículo específico.

🔍 Nota sobre a análise: Os dados que você verá a seguir foram obtidos usando o modo SCXCAN1,500K,LISTEN para capturar e analisar as mensagens do bus. Uma vez identificados os parâmetros, a configuração final usa SCXCAN1,500K,OBDII,29 para combinar parâmetros padrão OBD-II com os personalizados do CXECU.

Passo 1: Análise da Mensagem CAN

Primeiro, precisamos entender como o veículo transmite a informação do freio de mão.

Após analisar o bus CAN do Fiat Cronos com ferramentas de sniffing em modo LISTEN, encontramos:

📊 Freio de Mão - Mensagem ID 0x256

Estado Byte 0 Bits Ativos Valor Hex
Desativado 00000000 Nenhum 0x00
Ativado 00001000 Bit 3 0x08

Lógica de extração:

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

Se aplicarmos a máscara 0x08 ao byte:

  • 0x08 & 0x08 = 0x08Ativado (bit 3 = 1)
  • 0x00 & 0x08 = 0x00Desativado (bit 3 = 0)

Passo 2: Configurar o Bus CAN

Antes de configurar o parser, precisamos habilitar o bus CAN com a velocidade e protocolo corretos.

O Fiat Cronos usa um bus CAN de 500 Kbps com protocolo OBDII e CAN estendido de 29 bits:

>SCXCAN1,500K,OBDII,29<

📚 Ver documentação completa: Comando CXCAN

Detalhamento do comando:

  • 1 → Habilitar o módulo CAN
  • 500K → Velocidade de 500 Kbps (padrão em automóveis modernos)
  • OBDII → Protocolo OBD-II padrão
  • 29 → CAN ID estendido de 29 bits (em vez do padrão de 11 bits)

Verificar a configuração:

>QCXCAN<

Resposta esperada:

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

Passo 3: Configurar o Parser do Freio de Mão

Agora vamos configurar o parser no índice 22 (reservado para custom.handbrake_status):

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

📚 Ver documentação completa: Comando CXECU

Detalhamento de cada parâmetro:

Parâmetro Valor Descrição
Índice 22 Slot para custom.handbrake_status
Estado E Enabled (habilitado)
CAN ID 256 ID da mensagem em hexadecimal (0x256)
Start Bit 3 Bit 3 do Byte 0 (posição 3 na mensagem)
Length 1 1 bit de comprimento
Factor 1 Multiplicador (valor_extraído × 1)
Offset 0 Deslocamento (+0)
Min 0 Valor mínimo válido
Max 1 Valor máximo válido
Endian BE Big Endian
Sign U Unsigned (sem sinal)

Fórmula de conversão:

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

Neste caso, como extraímos apenas um bit, o valor final será 0 ou 1.

Verificar a configuração:

>QCXECU22<

Resposta esperada:

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

Passo 4: Consultar o Valor em Tempo Real

Uma vez configurado o parser, podemos consultar o estado atual do freio de mão:

>QECU22<

Respostas possíveis:

>RECU22,0...    // Freio de mão desativado
>RECU22,1...    // Freio de mão ativado

Capturando Mais Parâmetros do Cronos

Além do freio de mão, o Fiat Cronos transmite outros parâmetros úteis por CAN Bus:

Pedal de Freio - ID 0x0FA

// Pedal de freio: Byte 0, Bits 3-2 (0x0C)
// Solto: 0x80, Pressionado: 0x8C
>SCXECU23E,0FA,2,2,1,0,0,3,BE,U<

Análise de bits:

  • Byte 0 da mensagem 0x0FA
  • Bits 3-2 (máscara 0x0C)
  • Solto: 0x80 (1000 0000) → bits [3:2] = 00
  • Pressionado: 0x8C (1000 1100) → bits [3:2] = 11 (3 em decimal)

Pedal de Embreagem - ID 0x1F0

// Embreagem: Byte 0, Bits 7-6
// Solto: 0x00, Meio: 0x40 (bit 6), Fundo: 0x80 (bit 7)
>SCXECU27E,1F0,6,2,1,0,0,3,BE,U<

Análise de bits:

  • Byte 0 da mensagem 0x1F0
  • Bits 7-6 (2 bits)
  • Valores: 0 (solto), 1 (meio), 2 (fundo)

Configuração Completa para os 3 Parâmetros

// Configuração CAN Bus completa para Fiat Cronos
>SCXCAN1,500K,OBDII,29<

// Freio de mão (índice 22)
>SCXECU22E,256,3,1,1,0,0,1,BE,U<

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

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

// Consultar valores
>QECU22<    // Freio de mão: 0 ou 1
>QECU23<    // Pedal freio: 0 (solto) ou 3 (pressionado)
>QECU27<    // Embreagem: 0 (solto), 1 (meio), 2 (fundo)

Configuração de Eventos com Variáveis UV e Regras RL

Os valores capturados com CXECU podem ser usados em variáveis universais (UV) e regras RL do motor de eventos para criar lógica condicional e gerar alertas automáticos quando forem detectadas mudanças nos parâmetros monitorados.

Consultar Valores ECU com QECU

Os valores do CXECU estão disponíveis através do comando QECU[idx]:

// Consultar freio de mão (índice 22)
>QECU22<
>RECU22,1...    // 1 = ativado

// Consultar pedal de freio (índice 23)
>QECU23<
>RECU23,3...    // 3 = pressionado a fundo

Usar ECU em Variáveis UV com Fórmulas

As variáveis UV (User Variables) podem avaliar expressões que incluem valores ECU. A sintaxe é:

📚 Ver documentação completa: Comando UV

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

Tipos disponíveis:

  • F → Float (números com decimais)
  • U → Unsigned integer (inteiros sem sinal)
  • S → Signed integer (inteiros com sinal)

Exemplos para o Fiat Cronos:

// UV00 = 1 quando freio de mão está ativado (QECU22 >= 1)
>SUV00FQECU22%d:30,7,0,0,1,999<

// UV01 = 1 quando pedal de freio está pressionado (QECU23 >= 3)
>SUV01FQECU23%d:30,7,0,0,3,999<

// UV02 = 1 quando embreagem está pressionada (QECU27 >= 1)
>SUV02FQECU27%d:30,7,0,0,1,999<

Explicação da sintaxe:

  • SUV00F → Configurar UV00 com tipo Float (sem espaço entre F e o comando)
  • QECU22%d:30,7 → Consultar ECU índice 22, formato decimal, timeout 30s, do caractere 7
  • 0,0 → Posição início 0, comprimento 0 (tomar resposta completa)
  • 1,999 → Faixa: min=1 (inclusive), max=999 (exclusivo)
    • UV = 1 quando o valor está na faixa [min, max)
    • UV = 0 quando o valor está fora da faixa

Criar Relatórios de Posição com Regras RL

Uma vez configuradas as UV, você pode usá-las em regras RL para gerar relatórios de posição automáticos:

📚 Ver documentação completa: Comando RL

// Regra: Enviar relatório de posição quando ativar o freio de mão
>SRL50E;TRG=UV00+;ACC={GCQ55H}<

Explicação:

  • SRL50E → Regra 50 habilitada
  • TRG=UV00+ → Disparar quando UV00 passa de 0 para 1 (flanco ascendente)
  • ACC={GCQ55H} → Gerar relatório de posição com código 55 e prioridade alta (H)

📚 Comando para gerar relatórios: GCQ - Geração de Relatórios

Exemplo Completo: Sistema de Monitoramento do Freio de Mão

Arquivo: cronos_handbrake_events.txt

// ================================================
// Sistema de Monitoramento do Freio de Mão
// Usa CXECU + UV + Regras RL
// ================================================

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

// 2. Configurar parser do freio de mão
>SCXECU22E,256,3,1,1,0,0,1,BE,U<

// 3. Criar variável UV00 que avalia se freio está ativado
>SUV00FQECU22%d:30,7,0,0,1,999<

// 4. Regra: Evento quando ATIVA o freio de mão
>SRL50E;TRG=UV00+;ACC={GCQ55H}<

// 5. Regra: Evento quando DESATIVA o freio de mão
>SRL51E;TRG=UV00-;ACC={GCQ56H}<

// Verificar configuração
>QUV00<        // Ver estado de UV00
>QECU22<       // Ver valor do parser

Vantagens deste método:

  • Maior flexibilidade: Você pode combinar múltiplas condições
  • Eventos personalizados: Envio de códigos específicos com GCQ
  • Motor de regras nativo: Usa o sistema RL do firmware
  • Melhor desempenho: Avaliação mais eficiente no dispositivo

Carregar a Configuração

Os comandos podem ser enviados ao dispositivo por SMS, plataforma web ou 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 Gestão

Consultar Configuração

>QCXCAN<         // Consultar configuração do bus CAN
>QCXECU[idx]<    // Consultar parser específico (ex: QCXECU22)
>QECU[idx]<      // Consultar valor atual (ex: QECU22)

📚 Documentação: QCXCANQCXECUQECU

Respostas possíveis para QCXECU:

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

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

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

Habilitar/Desabilitar Rápido

>SCXECU22E<    // Habilitar parser já configurado
>SCXECU22D<    // Desabilitar parser temporariamente

Isto é ideal para:

  • 🔧 Manutenção: Desabilitar monitoramento temporariamente
  • 🔍 Diagnóstico: Isolar parâmetros problemáticos
  • Otimização: Reduzir carga do processador

Limpar Configurações

>CCXECU22<    // Limpar parser específico
>CCXECU99<    // Limpar TODOS os parsers

📚 Ver documentação completa: Comando CXECU


Fluxo de Trabalho Recomendado

1. Análise Inicial (Modo LISTEN)

Se você não tem a informação do bus CAN do veículo, primeiro precisa fazer uma análise em modo LISTEN para identificar as mensagens:

a) Configurar o bus CAN em modo escuta (LISTEN):

>SCXCAN1,500K,LISTEN<

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

>SDB0+CAN<

📚 Ver documentação completa: Comando DB

Isto mostrará todas as tramas CAN no terminal serial para análise.

💡 Nota importante: O modo LISTEN é apenas para análise. Permite capturar todas as mensagens do bus CAN sem interferir com o veículo.

c) Usar ferramentas de análise CAN (opcional):

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

d) Identificar mensagens:

  • Ativar/desativar o freio de mão repetidamente
  • Observar qual mensagem CAN muda de valor
  • Anotar o ID, byte e bit específico

e) Uma vez identificadas as mensagens, mudar para OBD-II:

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

⚠️ Importante: Depois da análise, sempre configurar com OBDII,29 para uso em produção. Isto permite:

  • Capturar parâmetros padrão OBD-II (RPM, velocidade, temperatura, etc.)
  • Capturar parâmetros personalizados com CXECU (freio de mão, pedais, etc.)

2. Configurar o Parser

Com a informação da análise, configurar o parser correspondente:

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

3. Verificar

>QCXECU22<    // Verificar configuração do parser
>QECU22<      // Verificar valores em tempo real

Ativar e desativar o freio de mão fisicamente e observar os valores.

4. Configurar Eventos com UV e RL

Uma vez verificado que o parser funciona corretamente, configurar variáveis UV e regras RL para gerar eventos automáticos (ver seção Configuração de Eventos com Variáveis UV e Regras RL).

5. Ajustar se Necessário

Se os valores não estão corretos, revisar:

Aspecto Verificação
Baudrate Deve coincidir com o veículo (500K é comum em carros)
Bit inicial Contar desde 0 dentro do byte correspondente
Comprimento Número de bits a extrair (1-32)
Endianness Big Endian (BE) vs Little Endian (LE)
CAN ID Verificar em hexadecimal (ex: 256 = 0x256)

Resolução de Problemas

Problema Comum: Parser não Captura Valores

Sintomas:

  • QECU22 sempre retorna 0 ou valores incorretos
  • A configuração parece correta mas não funciona

Checklist de diagnóstico:

Verificação Como Verificar Solução
Bus CAN habilitado >QCXCAN< deve retornar configuração ativa Executar >SCXCAN1,500K,OBDII,29<
Parser habilitado >QCXECU22< deve mostrar E no início Executar >SCXECU22E<
Mensagem transmitida Usar modo LISTEN ou debug CAN Verificar se ID aparece no bus
Bit correto Comparar máscara com valor real Ajustar start_bit e length
Fator/Offset Verificar fórmula de conversão Ajustar multiplicador e deslocamento

Exemplo Real: Debugging do Freio de Mão

Problema: O valor de QECU22 sempre retorna 0, mesmo com o freio ativado.

Diagnóstico:

  1. Verificar que a mensagem é transmitida:

    // Ativar logging de CAN (se disponível)
    // Procurar mensagens com ID 0x256
    
  2. Verificar o bit correto:

    • O freio de mão usa o bit 3 (máscara 0x08)
    • Start bit deve ser 3, não 0
  3. Verificar a configuração:

    >QCXECU22<
    // Deve mostrar: >RQCXECU22E,00000256,3,1,...
    //                                     ^ start bit deve ser 3
    
  4. Testar manualmente:

    • Ativar e desativar o freio repetidamente
    • Consultar >QECU22< depois de cada mudança
    • Deve alternar entre 0 e 1

Quando usar CXECU?

⚠️ Importante: CXECU está projetado para capturar mensagens CAN que são transmitidas continuamente no bus (broadcast) que não estão incluídas nos protocolos padrão.

Casos de uso ideais:

Protocolo Uso com CXECU Descrição
J1939 ✅ Ideal Veículos pesados - dados contínuos do motor e transmissão
LISTEN ✅ Apenas análise Modo de escuta para identificar mensagens (não para produção)
PLAIN ✅ Ideal CAN básico sem protocolo específico
OBD-II ✅ Complementar ⭐ Para mensagens proprietárias que o protocolo padrão não interpreta

O Caso do Fiat Cronos

O Fiat Cronos é um exemplo perfeito de OBD-II + CXECU:

  • OBD-II padrão captura: RPM, velocidade, temperatura do motor, nível de combustível padrão, códigos de erro (DTC), etc.
  • CXECU personalizado captura: Freio de mão (ID 0x256), pedal de freio (ID 0x0FA), pedal de embreagem (ID 0x1F0)

Estes últimos são mensagens proprietárias da Fiat que o protocolo OBD-II não está projetado para interpretar. Por isso a configuração é:

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

Desta forma você obtém o melhor de ambos os mundos: parâmetros padrão + parâmetros personalizados.


Conclusão

Com CXECU você aprendeu a:

Analisar mensagens CAN reais do Fiat Cronos ✅ Configurar um parser para extrair o estado do freio de mão ✅ Criar eventos automáticos que alertam quando o freio é ativado ✅ Capturar múltiplos parâmetros (freio, embreagem, pedais)

Esta mesma metodologia pode ser aplicada a qualquer veículo que transmita dados por CAN Bus. Você só precisa:

  1. 🔍 Analisar o bus CAN com ferramentas de sniffing
  2. 📊 Identificar a mensagem, byte e bit do parâmetro desejado
  3. ⚙️ Configurar o parser CXECU com os dados obtidos
  4. 📡 Criar eventos automáticos com variáveis UV e regras RL

Precisa de ajuda? A equipe técnica da Rinho oferece:

  • 📋 Configuração de parsers para o seu modelo de veículo
  • 🔍 Análise do bus CAN e extração de parâmetros
  • 🛠️ Suporte técnico especializado para casos complexos
  • 📚 Documentação personalizada para a sua frota

Com os dispositivos Rinho Spider IoT e Rinho Smart IoT, leve a telemetria veicular para o próximo nível.

📚 Para documentação técnica completa, visite nosso guia de comandos CANBUS na documentação oficial.