O protocolo KWP2000 tornou-se um padrão de facto em aplicações de diagnósticos automotivos. Ele é padronizado como o ISO 14230-3. KWP2000 descreve a implementação de vários serviços de diagnóstico, você pode accethrough o protocolo. Você pode executar o KWP2000 em várias camadas de transporte, tais como o K-line (serial) ou CAN.
Protocolo de transporte
Como KWP2000 usa mensagens de comprimento variável byte, um protocolo de transporte é necessário em camadas com apenas um comprimento de mensagem (curta) bem definidos, como pode. O protocolo de transporte divide uma longa mensagem de KWP2000 em peças que podem ser transferidas pela rede e remonta os pedaços para recuperar a mensagem original.
KWP2000 roda pode em vários protocolos de transporte como ISO TP (ISO 15765-2), 1.6 de TP, TP 2. 0 (Volkswagen) e SAE J1939-21. Para KWP2000, o diagnóstico automotivo comando Set suporta apenas o ISO TP (padronizado em ISO 15765-2) e os protocolos de transporte específicos do fabricante VW TP 2.0.
Serviços de diagnóstico
Os serviços de diagnóstico disponíveis no KWP2000 são agrupados em unidades funcionais e identificados por um código de um byte (ServiceId). O padrão não define todos os códigos; para alguns códigos, a norma refere-se a outras normas SAE ou ISO, e alguns são reservados para extensões específicas do fabricante. O diagnóstico automotivo comando Set suporta os seguintes serviços:
• Gestão de diagnóstico
• Transmissão de dados
• Armazenados de transmissão de dados (Diagnostic Trouble Codes)
• Controle de entrada/saída
• Ativação remota de rotina
Serviços de upload/Download e prolongado não fazem parte do diagnóstico automotivo comando Set.
Formato de serviço diagnóstico
Serviços de diagnóstico têm um formato comum de mensagem. Cada serviço define uma solicitação de mensagem, mensagem de resposta positiva e mensagem de resposta negativa. A mensagem de solicitação tem o ServiceId como primeiro byte, além de parâmetros definidos pelo serviço adicionais. A mensagem de resposta positiva tem um eco de ServiceId com o bit 6, definido como o primeiro byte, mais os parâmetros definidos pelo serviço de resposta.
A mensagem de resposta negativa é geralmente uma mensagem de três bytes: tem o ServiceId de resposta negativa como primeiro byte, um eco do ServiceId original como o segundo byte e um ResponseCode como terceiro byte. A única exceção a este formato é a resposta negativa a um serviço de EscapeCode; aqui, o terceiro byte é um eco do código definido pelo usuário do serviço, e o quarto byte é o ResponseCode. O padrão de KWP2000 define parcialmente o ResponseCodes, mas há espaço para extensões específicas do fabricante. Para alguns o ResponseCodes, KWP2000 define um procedimento de tratamento de erros. Porque as respostas positivas e negativas têm um eco do serviço solicitado, você sempre pode atribuir as respostas ao seu pedido correspondente.
Ligar/desligar
KWP2000 espera que uma sessão de diagnóstico para ser iniciado com StartDiagnosticSession e terminou com StopDiagnosticSession. No entanto, a StartDiagnosticSession tem um parâmetro de DiagnosticMode que determina o tipo de sessão de diagnóstico. Dependendo deste tipo, ECU podem ou pode não oferecer suporte a outros serviços de diagnóstico ou operar em um modo restrito, onde nem todas as funções do ECU estão disponíveis. Os valores de parâmetro de DiagnosticMode somos fabricante específico e não definido na norma. Para um sessão de diagnóstico permanecer ativo, ele deve executar o serviço de TesterPresent periodicamente se nenhum outro serviço é executado. Se o serviço de TesterPresent está faltando para um determinado período de tempo, é encerrado o sessão de diagnóstico, e o ECU retorna ao modo de operação normal.
GetSeed/desbloquear
Um mecanismo de GetSeed/desbloqueio pode proteger alguns serviços de diagnóstico. No entanto, os serviços aplicáveis são deixados ao fabricante e não definidos pela norma.Você pode executar o mecanismo de GetSeed/desbloqueio através do serviço SecurityAccess. Isso define vários níveis de segurança, mas o fabricante atribui a esses níveis para determinados serviços.
Memória de leitura/gravação
Use os serviços de leitura/WriteMemoryByAddress para upload/download de dados para determinados endereços de memória em um ECU. O endereço é uma quantidade de três bytes em KWP2000 e uma quantidade de cinco bytes (endereço de quatro bytes e a extensão de um byte) nos protocolos de calibração. Os serviços da unidade funcional de Upload/Download são altamente fabricante específico e não bem definido na norma, então eles não são uma boa maneira de fornecer um mecanismo geral de upload/download.
Medições
Use os serviços de ReadDataByLocal/CommonIdentifier para acessar dados de ECU de forma semelhante a uma lista DAQ. Um Local/CommonIdentifier descreve uma lista de quantidades de ECU que são, então, transferido do ECU para o testador. A transferência pode ser um único valor ou taxa de transferência periódicas, com um lento, médio ou rápido. As taxas de transferência são fabricante específico; você pode usar o serviço de SetDataRates para defini-los, mas essa configuração é específico do fabricante. O diagnóstico automotivo comando Set suporta medições de ponto único.
Códigos de diagnóstico
Um importante recurso diagnóstico é a leitura de códigos de diagnóstico (CDT). KWP2000 define