Geralmente, eu não sou uma 'pessoa do carro', então espero que eu possa explicar isso o suficiente para obter ajuda aqui:
Ao enviar mensagens para um dispositivo OBD-II, recebo uma resposta na maioria dos carros que testei. No entanto, com carros que aparentemente possuem mais de um chip de ECU, recebo uma resposta de cada um deles. Por exemplo, se eu enviar um 01 0C
comando PID para um veículo com 3 chips de ECU, recebo 3 respostas que geralmente são muito semelhantes, mas ainda diferentes.
Um 01 00
comando deve retornar 4 bytes que indiquem os PIDs suportados do veículo, mas isso também retorna 4 bytes para cada ECU - um sendo um 4 bytes totalmente desenvolvido com vários sinalizadores ativados e desativados, enquanto os outros parecem ter apenas um punhado de sinalizadores ativados (esses sinalizadores até agora parecem sempre estar incluídos na resposta 'principal', mas não tenho certeza se esse é sempre o caso).
Exemplo:
SENT: 01 00
RECEIVED:
00 BF BF AC D3 - This response has the most binary flags turned on
00 98 18 80 11 - 8 flags on here
00 98 18 80 13 - 9 flags on here
As duas últimas linhas consistem em sinalizadores que também são sinalizados na primeira linha, mas a linha 3 possui um sinalizador adicional que a linha 2 não possui.
Parece-me que talvez exista uma única ECU qualificada como o chip 'primário' que eu deveria estar ouvindo quando estou enviando comandos e (acho) eu entendo que posso usar uma máscara / filtro CAN ID para Preste atenção apenas nos que eu preciso.
A pergunta é: Existe realmente um 'ECU primário' no qual devo prestar atenção ou todas essas respostas são igualmente importantes? Se houver um principal que eu precise direcionar, existe um comando que eu possa enviar para determinar qual é o 'mais significativo'?
Veículos testados em:
2011 Chevy Cruze [2 ECUs]
2015 BMW M5 [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]
Respostas:
Se o seu veículo for 2008 ou mais recente, ele está usando o protocolo can, você pode usar o comando AT CR para selecionar de qual ECU deseja ouvir.
Veja como:
enviar
isso ativará os cabeçalhos para ver os endereços das ECUs.
enviar
este é um comando OBD para mostrar quais dos pids de 1 a 20 são suportados.
sua resposta deve ser como:
isso mostra que você tem 2 ECUs 7E8 (motor) 7E9 (transmissão);
eu vi 5 ECUs retornados: 7E8,7E9,7EA, 7EB, 7EC.
Para ouvir apenas uma ECU, emita AT CRA xxx onde xxx é o endereço da ECU.
envie o seguinte
então
retornará:
enviar
para desativar os cabeçalhos e enviar:
e você vai voltar apenas
Se o seu veículo for de 29 bits, a ressonância 0100 será semelhante a:
isto mostra 2 ECUs 18DAF118 (transmissão) e 18DAF110 (motor).
enviar
ouvir apenas do motor.
fonte
CAN não funciona como você pensa.
CAN não é baseado em módulo, é baseado em mensagem. Nenhum módulo fala diretamente com qualquer outro módulo. No CAN, um módulo gera uma mensagem com um endereço, que identifica os dados que estarão contidos na mensagem. Além disso, o endereço dá a importância da mensagem. Quanto menor o endereço, maior a prioridade.
Por exemplo, o ABS transmitirá a velocidade do veículo. Todos os outros módulos que precisam dos dados irão lê-los.
Não existe um módulo que seja mais importante que qualquer outro, é a prioridade da mensagem que é importante.
fonte