Il protocollo KWP2000 è diventato uno standard de facto nelle applicazioni di diagnostica automotive. Standardizzato come ISO 14230-3. KWP2000 descrive l'implementazione di vari servizi diagnostici è possibile accethrough il protocollo. KWP2000 può essere eseguito su diversi strati di trasporto come K-line (seriale) o CAN.
Protocollo di trasporto
Come KWP2000 utilizza i messaggi di lunghezza variabile di byte, un protocollo di trasporto è necessario su strati con solo una lunghezza del messaggio (breve) ben definiti, come il CAN. Il protocollo di trasporto si divide un lungo messaggio KWP2000 in pezzi che possono essere trasferiti attraverso la rete e riassembla i pezzi per recuperare il messaggio originale.
KWP2000 corre sul può su vari protocolli di trasporto come TP ISO (ISO 15765-2), TP 1.6, 2 TP. 0 (Volkswagen) e SAE J1939-21. Per KWP2000, Automotive Diagnostic Command Set supporta solo la ISO TP (standardizzato in ISO 15765-2) e i protocolli di trasporto fornitore-specifiche VW TP 2.0.
Servizi diagnostici
I servizi diagnostici disponibili in KWP2000 sono raggruppati in unità funzionali e identificati da un codice di un byte (ServiceId). La norma non definisce tutti i codici; per alcuni codici, la norma si riferisce agli altri standard SAE o ISO, e alcuni sono riservati per le estensioni specifiche del produttore. Automotive Diagnostic Command Set supporta i seguenti servizi:
• Gestione diagnostica
• Trasmissione dati
• Memorizzate la trasmissione dei dati (Diagnostic Trouble Codes)
• Controllo di ingresso/uscita
• Attivazione remota di Routine
Servizi di Upload/Download e prolungato non sono parte dell'Automotive Diagnostic Command Set.
Formato servizio diagnostico
Servizi diagnostici hanno un formato di messaggio comune. Ogni servizio definisce un messaggio di richiesta e risposta messaggio positivo negativo messaggio di risposta. Il messaggio di richiesta ha IDServizio come primo byte, più ulteriori parametri definiti dal servizio. Il messaggio di risposta positiva ha un'eco di IDServizio con bit 6 impostare come primo byte, più i parametri di risposta definita dal servizio.
Il messaggio di risposta negativa è di solito un messaggio di tre byte: ha l'IDServizio risposta negativa come primo byte, un'eco dell'originale IDServizio come secondo byte e un ResponseCode come terzo byte. L'unica eccezione a questo formato è la risposta negativa a un servizio di EscapeCode; qui, il terzo byte è un'eco del codice servizio definito dall'utente, e il quarto byte è il ResponseCode. Lo standard KWP2000 parzialmente definisce il ResponseCodes, ma c'è spazio lasciato per le estensioni specifiche del produttore. Per alcuni la ResponseCodes, KWP2000 definisce una procedura di gestione degli errori. Perché le risposte positive e negative hanno un'eco del servizio richiesto, è possibile assegnare sempre le risposte alla loro richiesta corrispondente.
Collegare e scollegare
KWP2000 prevede una sessione diagnostica per essere iniziato con StartDiagnosticSession e terminato con StopDiagnosticSession. Tuttavia, StartDiagnosticSession ha un parametro di DiagnosticMode che determina il tipo di sessione diagnostica. A seconda di questo tipo, l'ECU può potrebbe non supportare altri servizi diagnostici o operano in una modalità limitata dove non tutte le funzioni di ECU sono disponibili. I valori dei parametri DiagnosticMode sono produttori specifici e non definiti nello standard. Per una sessione di diagnostica di rimanere attivi, deve eseguire il servizio TesterPresent periodicamente, se nessun altro servizio viene eseguito. Se il servizio TesterPresent è manca per un certo periodo di tempo, viene terminata la sessione di diagnostica, e l'ECU ritorna alla modalità di funzionamento normale.
GetSeed/sbloccare
Un meccanismo di GetSeed/sblocco può proteggere alcuni servizi diagnostici. Tuttavia, i servizi applicabili sono a sinistra il produttore e non definiti dallo standard.È possibile eseguire il meccanismo GetSeed/sblocco tramite il servizio SecurityAccess. Questo definisce diversi livelli di sicurezza, ma il produttore assegna questi livelli di determinati servizi.
Memoria di lettura/scrittura
Utilizzare i servizi di lettura/WriteMemoryByAddress per caricare/scaricare dati per certi indirizzi di memoria su un ECU. L'indirizzo è una quantità di tre byte in KWP2000 e una quantità di cinque byte (indirizzo di quattro byte e l'estensione di un byte) in protocolli di calibrazione. I servizi di Upload/Download unità funzionali sono altamente produttore specifico e non ben definito nello standard, quindi non sono un buon modo per fornire un meccanismo generale di upload/download.
Misurazioni
Utilizzare i servizi di ReadDataByLocal/CommonIdentifier per accedere ai dati ECU in un modo simile a un elenco DAQ. Un locale/CommonIdentifier descrive un elenco di quantità di ECU che vengono poi trasferiti dalla ECU al tester. Il trasferimento può essere singolo valore o tasso di trasferimento periodico, con un lento, medio o veloce. Le tariffe di trasferimento sono fornitore specifico; è possibile utilizzare il servizio SetDataRates per li, ma questa impostazione è specifico del produttore. Automotive Diagnostic Command Set supporta le misure single-point.
Diagnostic Trouble Codes
Una caratteristica diagnostica importante è la lettura del Diagnostic Trouble Codes (DTC). KWP2000 definisce