The KWP2000 protocol has turn into a de facto commonplace in automotive diagnostic purposes. It’s standardized as ISO 14230-Three. KWP2000 describes the implementation of varied diagnostic providers you possibly can accethrough the protocol. You possibly can run KWP2000 on a number of transport layers comparable to Ok-line (serial) or CAN.
As KWP2000 makes use of messages of variable byte lengths, a transport protocol is important on layers with solely a nicely outlined (quick) message size, comparable to CAN. The transport protocol splits a protracted KWP2000 message into items that may be transferred over the community and reassembles these items to get better the unique message.
KWP2000 runs on CAN on numerous transport protocols comparable to ISO TP (ISO 15765-2), TP 1.6, TP 2.zero (Volkswagen), and SAE J1939-21. For KWP2000, the Automotive Diagnostic Command Set helps solely the ISO TP (standardized in ISO 15765-2) and manufacturer-specific VW TP 2.zero transport protocols.
The diagnostic providers obtainable in KWP2000 are grouped in useful models and recognized by a one-byte code (ServiceId). The usual doesn’t outline all codes; for some codes, the usual referers to different SAE or ISO requirements, and a few are reserved for manufacturer-specific extensions. The Automotive Diagnostic Command set helps the next providers:
• Diagnostic Administration
• Knowledge Transmission
• Saved Knowledge Transmission (Diagnostic Bother Codes)
• Enter / Output Management
• Distant Activation of Routine
Add / Obtain and Prolonged providers will not be a part of the Automotive Diagnostic Command Set.
Diagnostic Service Format
Diagnostic providers have a standard message format. Every service defines a Request Message, Constructive Response Message, and Unfavorable Response Message. The Request Message has the ServiceId as first byte, plus further service-defined parameters. The Constructive Response Message has an echo of the ServiceId with bit 6 set as first byte, plus the service-defined response parameters.
The Unfavorable Response Message is often a three-byte message: it has the Unfavorable Response ServiceId as first byte, an echo of the unique ServiceId as second byte, and a ResponseCode as third byte. The one exception to this format is the unfavorable response to an EscapeCode service; right here, the third byte is an echo of the user-defined service code, and the fourth byte is the ResponseCode. The KWP2000 commonplace partially defines the ResponseCodes, however there’s room left for manufacturer-specific extensions. For among the ResponseCodes, KWP2000 defines an error dealing with process. As a result of each optimistic and unfavorable responses have an echo of the requested service, you possibly can at all times assign the responses to their corresponding request.
Join / Disconnect
KWP2000 expects a diagnostic session to be began with StartDiagnosticSession and terminated with StopDiagnosticSession. Nonetheless, StartDiagnosticSession has a DiagnosticMode parameter that determines the diagnostic session kind. Relying on this sort, the ECU could or could not help different diagnostic providers, or function in a restricted mode the place not all ECU capabilities can be found. The DiagnosticMode parameter values are producer particular and never outlined in the usual. For a diagnostic session to stay lively, it should execute the TesterPresent service periodically if no different service is executed. If the TesterPresent service is lacking for a sure time frame, the diagnostic session is terminated, and the ECU returns to regular operation mode.
GetSeed / Unlock
A GetSeed / Unlock mechanism could defend some diagnostic providers. Nonetheless, the relevant providers are left to the producer and never outlined by the usual.You possibly can execute the GetSeed / Unlock mechanism by means of the SecurityAccess service. This defines a number of ranges of safety, however the producer assigns these ranges to sure providers.
Learn / Write Reminiscence
Use the Learn / WriteMemoryByAddress providers to add / obtain information to sure reminiscence addresses on an ECU. The deal with is a three-byte amount in KWP2000 and a five-byte amount (four-byte deal with and one-byte extension) within the calibration protocols. The Add / Obtain useful unit providers are extremely producer particular and never nicely outlined in the usual, so they don’t seem to be a great way to supply a common add / obtain mechanism.
Use the ReadDataByLocal / CommonIdentifier providers to entry ECU information in a approach just like a DAQ checklist. A Native / CommonIdentifier describes an inventory of ECU portions which can be then transferred from the ECU to the tester. The switch could be both single worth or periodic, with a sluggish, medium, or quick switch charge. The switch charges are producer particular; you should utilize the SetDataRates service to set them, however this setting is producer particular. The Automotive Diagnostic Command Set helps single-point measurements.
Diagnostic Bother Codes
A serious diagnostic function is the readout of Diagnostic Bother Codes (DTCs). KWP2000 defines a number of providers that entry DTCs primarily based on their group or standing.
Enter / Output Management
KWP2000 defines providers to switch inner or exterior ECU indicators. One instance is redirecting ECU sensor inputs to stimulated indicators. The management parameters of those instructions are producer particular and never outlined in the usual.
Distant Activation of a Routine
These providers are just like the ActionService and DiagService capabilities of CCP. You possibly can invoke an ECU inner routine recognized by a Native / CommonIdentifier or a reminiscence deal with. Opposite to the CCP case, execution of this routine could be asynchronous; that’s, there are separate Begin, Cease, and RequestResult providers. The management parameters of those instructions are producer particular and never outlined in the usual.
For extra details about the KWP2000 Commonplace, seek advice from the ISO 14230-Three commonplace.