Het KWP2000-protocol in diagnostische toepassingen voor auto’s
Het KWP2000-protocol is een de facto standaard geworden in diagnostische toepassingen voor auto’s. Het is gestandaardiseerd als ISO 14230-3. KWP2000 beschrijft de implementatie van verschillende diagnostische diensten waartoe u toegang hebt via het protocol. U kunt KWP2000 op meerdere transportlagen draaien zoals K-line (serieel) of CAN.
Transportprotocol
Omdat KWP2000 berichten met variabele bytelengtes gebruikt, is een transportprotocol nodig op lagen met alleen een goed gedefinieerde (korte) berichtlengte, zoals CAN. Het transportprotocol splitst een lang KWP2000-bericht in stukken die over het netwerk kunnen worden verzonden en zet die stukken weer in elkaar om het oorspronkelijke bericht te herstellen.
KWP2000 draait op CAN op verschillende transportprotocollen zoals ISO TP (ISO 15765-2), TP 1.6, TP 2. 0 (Volkswagen) en SAE J1939-21. Voor KWP2000 ondersteunt de Automotive Diagnostic Command Set alleen de ISO TP (gestandaardiseerd in ISO 15765-2) en fabrikantspecifieke VW TP 2.0-transportprotocollen.
Diagnostische diensten
De diagnostische services die beschikbaar zijn in KWP2000 zijn gegroepeerd in functionele eenheden en geïdentificeerd door een code van één byte (ServiceId). De norm definieert niet alle codes; voor sommige codes verwijst de norm naar andere SAE- of ISO-normen, en sommige zijn gereserveerd voor fabrikantspecifieke uitbreidingen. De Automotive Diagnostic Command Set ondersteunt de volgende services:
• Diagnostisch beheer
• Dataoverdracht
• Opgeslagen gegevensoverdracht (diagnostische foutcodes)
• Invoer-/uitvoerregeling
• Activering van routine op afstand
Upload/Download en Uitgebreide services maken geen deel uit van de Automotive Diagnostic Command Set.
Diagnostische service-indeling:
Diagnostische services hebben een gemeenschappelijk berichtformaat. Elke service definieert een verzoekbericht, een positief antwoordbericht en een negatief antwoordbericht. Het aanvraagbericht heeft de ServiceId als eerste byte, plus aanvullende door de service gedefinieerde parameters. Het positieve responsbericht heeft een echo van de ServiceId met bit 6 ingesteld als eerste byte, plus de door de service gedefinieerde responsparameters.
Het Negative Response Message is meestal een bericht van drie bytes: het heeft de Negative Response ServiceId als eerste byte, een echo van de originele ServiceId als tweede byte en een ResponseCode als derde byte. De enige uitzondering op dit formaat is de negatieve reactie op een EscapeCode-service; hier is de derde byte een echo van de door de gebruiker gedefinieerde servicecode en de vierde byte is de ResponseCode. De KWP2000-standaard definieert de ResponseCodes deels, maar er is nog ruimte voor fabrikantspecifieke uitbreidingen. Voor sommige ResponseCodes definieert KWP2000 een procedure voor foutafhandeling. Omdat zowel positieve als negatieve reacties een echo hebben van de gevraagde service, kun je de reacties altijd toewijzen aan hun bijbehorende verzoek.
Verbinden/Verbreken
KWP2000 verwacht dat een diagnostische sessie wordt gestart met StartDiagnosticSession en wordt beëindigd met StopDiagnosticSession. StartDiagnosticSession heeft echter een DiagnosticMode-parameter die het type diagnostische sessie bepaalt. Afhankelijk van dit type kan de ECU al dan niet andere diagnostische diensten ondersteunen of in een beperkte modus werken waar niet alle ECU-functies beschikbaar zijn. De parameterwaarden van DiagnosticMode zijn fabrikantspecifiek en niet gedefinieerd in de norm. Om een diagnostische sessie actief te laten blijven, moet deze de TesterPresent-service periodiek uitvoeren als er geen andere service wordt uitgevoerd. Als de TesterPresent-service gedurende een bepaalde periode ontbreekt, wordt de diagnostische sessie beëindigd en keert de ECU terug naar de normale bedrijfsmodus.
GetSeed/Ontgrendelen
Een GetSeed/Unlock-mechanisme kan sommige diagnostische services beschermen. De toepasselijke services worden echter overgelaten aan de fabrikant en worden niet gedefinieerd door de standaard. U kunt het GetSeed/Unlock-mechanisme uitvoeren via de SecurityAccess-service. Dit definieert verschillende beveiligingsniveaus, maar de fabrikant wijst deze niveaus toe aan bepaalde services.
Geheugen lezen/schrijven
Gebruik de Read/WriteMemoryByAddress-services om gegevens naar bepaalde geheugenadressen op een ECU te uploaden/downloaden. Het adres is een hoeveelheid van drie bytes in KWP2000 en een hoeveelheid van vijf bytes (adres van vier bytes en extensie van één byte) in de kalibratieprotocollen. De diensten van de functionele eenheid Upload/Download zijn zeer fabrikantspecifiek en niet goed gedefinieerd in de standaard, dus ze zijn geen goede manier om een algemeen upload-/downloadmechanisme te bieden.
Maten
Gebruik de ReadDataByLocal/CommonIdentifier-services om toegang te krijgen tot ECU-gegevens op een manier die vergelijkbaar is met een DAQ-lijst. Een Local/CommonIdentifier beschrijft een lijst met ECU-hoeveelheden die vervolgens van de ECU naar de tester worden overgebracht. De overdracht kan een enkele waarde of periodiek zijn, met een langzame, gemiddelde of snelle overdrachtssnelheid. De overdrachtssnelheden zijn fabrikantspecifiek; u kunt de SetDataRates-service gebruiken om ze in te stellen, maar deze instelling is fabrikantspecifiek. De Automotive Diagnostic Command Set ondersteunt single-point metingen.
Diagnostische foutcodes
Een belangrijke diagnostische functie is het uitlezen van diagnostische storingscodes (DTC’s). KWP2000 definieert verschillende services die toegang hebben tot DTC’s op basis van hun groep of status.
Invoer-/uitvoerregeling
KWP2000 definieert services om interne of externe ECU-signalen te wijzigen. Een voorbeeld is het omleiden van ECU-sensoringangen naar gestimuleerde signalen. De regelparameters van deze commando’s zijn fabrikantspecifiek en niet gedefinieerd in de norm.
Activering van een routine op afstand
Deze services zijn vergelijkbaar met de ActionService- en DiagService-functies van CCP. U kunt een interne ECU-routine aanroepen die wordt geïdentificeerd door een Local/CommonIdentifier of een geheugenadres. In tegenstelling tot het geval van de CCP kan de uitvoering van deze routine asynchroon zijn; dat wil zeggen, er zijn afzonderlijke Start-, Stop- en RequestResult-services. De regelparameters van deze commando’s zijn fabrikantspecifiek en niet gedefinieerd in de norm.
Externe referenties
Raadpleeg voor meer informatie over de KWP2000-standaard de ISO 14230-3-standaard.