Keyword2000 v1.5 (1997)
Keyword2000 v1.5 (1997)
Page: 2 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Table of Content
1 - SCOPE .........................................................................................................................11
4 - CONVENTIONS............................................................................................................17
Page: 3 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 4 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 5 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 6 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 7 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 8 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Introduction
This document is based on the International Standard "ISO 14230-3 Road Vehicles - Diagnostic Systems Keyword
Protocol 2000 Part 3: Implementation". Changes are indicated by changing the font from "Arial" to "Times New
Roman"!
The Keyword Protocol 2000 Part 3 Implementation Recommended Practice has been established in order to define
common requirements for the implementation of diagnostic services for diagnostic systems. The figure below shows the
"Hierachy of Documents" and indicates the level of commonality between the documents.
I S O 1 4 2 2 9 R o a d V e h ic le s - D ia g n o s t ic S y s t e m s
( I n t e r n a t io n a l S t a n d a r d ) IS O 1 4 2 2 9
D ia g n o s t ic S e r v i c e s
I m p le m e n t a t i o n o f
D ia g n o s t i c S e r v ic e s
I S O 1 4 2 3 0 R o a d V e h ic le s - D ia g n o s t ic S y s t e m s
K e y w o r d P r o t o c o l 2 0 0 0 ( I n t e r n a t io n a l S t a n d a r d )
IS O 1 4 2 3 0 - 1 IS O 1 4 2 3 0 - 2 IS O 1 4 2 3 0 - 3 IS O 1 4 2 3 0 - 4
K ey w o rd P ro to co l 2 0 0 0 K e y w o rd P ro to c o l 2 0 0 0 K e y w o rd P ro to c o l 2 0 0 0 K e y w o rd P ro to co l 2 0 0 0
R e q u ir e m e n t s F o r
P h y s ic a l L a y e r D a ta L i n k L a y e r Im p le m e n ta tio n E m i s s io n R e la te d S y s t e m s
1 0 0 % ca rry o v er S u b se t S u b se t 1 0 0 % ca rry o v er
+ +
m o r e d e t a il m o r e d e t a il
V D A 1 4 2 3 0 K e y w o r d P r o t o c o l 2 0 0 0 R e c o m m e n d e d P r a c t ic e
IS O 1 423 0 - 1 K ey w o rd P ro to co l 2 0 0 0 K ey w o rd P ro to co l 2 0 0 0 IS O 1 4 2 3 0 - 4
K e y w o rd P ro to c o l 2 0 0 0 D a ta L i n k L a y e r Im p le m e n ta tio n K e y w o rd P ro to co l 2 0 0 0
R e q u ir e m e n t s F o r
P h y sic a l L a y e r R e c o m m e n d e d P r a c ti c e R e c o m m e n d e d P r a c t ic e E m i s s io n R e la te d S y s t e m s
sa m e o r su b set m o r e d e t a i l/ m o r e d e t a i l/ 1 0 0 % ca rry o v er
sa m e /su b se t sa m e /su b se t
K e y w o r d P r o t o c o l 2 0 0 0 ( V e h ic le M a n u f a c t u r e r S p e c if ic a t io n )
P a rt 1 P a rt 2 P a rt 3 IS O 1 4 2 3 0 - 4
P h y s ic a l L a y e r b a s e d o n K e y w o rd P ro to co l 2 0 0 0
D a t a L in k L a y e r b a s e d o n I m p le m e n ta ti o n o f S e r v ic e s
R e q u ir e m e n t s F o r
K W P 2000 K W P 2000 based on K W P 20 00 E m i s s io n R e la te d S y s t e m s
P r o j e c t s p e c i fi c P r o j e c t s p e c i fi c P r o j e c t s p e c i fi c 1 0 0 % c a r r y o v e r , if
su b set su b set su b set sy ste m is E O B D
a n d /o r O B D II
r e le v a n t
K e y w o r d P r o t o c o l 2 0 0 0 ( P r o j e c t S p e c if ic a t io n )
P a rt 1 P a rt 2 P a rt 3 IS O 1 4 2 3 0 - 4
P h y sic a l L a y e r D a ta L in k L a y e r P r o j e c t s p e c if i c K e y w o rd P ro to co l 2 0 0 0
R e q u ir e m e n t s F o r
P ro je c t sp e c ific P r o j e c t s p e c if i c Im p le m e n ta tio n o f S e rv ic e s E m i s s io n R e la te d S y s t e m s
• The ISO 14229 Diagnostic Services (International Standard) document specifies common requirements for the
implementation of diagnostic services.
• The ISO 14230 Keyword Protocol 2000 (International Standard) documents specify the requirements of the
"Physical Layer, Data Link Layer and Implementation of Diagnostic Services" in three (3) different documents.
Page: 9 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
• The Keyword Protocol 2000 (Part 3 Implementation Recommended Practice) documents are based on the
International Standard ISO 14230 and therefore fully compatible. The Keyword Protocol 2000 - Physical Layer,
Data Link Layer, and the Implementation documents are a "subset with additional detail based on mutual
agreement between all companies listed on the cover sheet of this document".
• The Keyword Protocol 2000 (Vehicle Manufacturer Specification) document is based on the Part 3
Implementation Recommended Practice document. The Part 1 Physical Layer, Part 2 Data Link Layer, and the
Part 3 Implementation of Services documents shall specify more detail or the same or a subset of the Part 3
Implementation Recommended Practice.
• The Keyword Protocol 2000 (Project Specification) document (e.g. Engine Management) is based on the
vehicle manufacturer specification document. The document of the system supplier specifies system and customer
specific Part 1 Physical Layer, Part 2 Data Link Layer and Part 3 Implementation details (e.g. datastreams,
diagnostic trouble codes, input/output controls, etc.).
The Part 3 Implementation Recommended Practice is based on the Open System Interconnection (O.S.I.)
Basic Reference Model in accordance with ISO 7498 which structures communication systems into seven
layers. When mapped on this model, the services used by a diagnostic tester and an Electronic Control Unit
(ECU) are broken into:
Mapping of the Diagnostic Services and Keyword Protocol 2000 onto the OSI model is shown below. ISO 14230 will
consist of the following parts, under the general title Road vehicles - Diagnostic systems - Keyword Protocol 2000:
A p p lic a tio n
D ia g n o s tic D a ta
P re s e n ta tio n L a y e r (L a y e r 6 ) L a y e r 6 to 3
S e s s io n L a ye r (L a y e r 5 ) a re n o t d e fin e d
T ra n s p o rt L a y e r (L a y e r 4 ) w ith in th e d ia g n o s tic
N e tw o rk L a ye r (L a ye r 3 ) s e rv ic e d o c u m e n t
D a ta L in k L a ye r
(L a y e r 2 ) D a ta L in k L a ye r
(P a rt 2 )
P h y s ic a l L a y e r
(L a y e r 1 ) P h y s ic a l L a ye r
(P a rt 1 )
Figure 1 - Mapping of the Diagnostic Services and Keyword Protocol 2000 on the OSI Model
Page: 10 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
1 - Scope
The KWP 2000 Part 3 Implementation Recommended Practice specifies the requirements for the Keyword Protocol
2000 data link by which one or several on-vehicle Electronic Control Units are connected to an off-board tester in order
to perform diagnostic functions.
The KWP 2000 Part 3 Implementation Recommended Practice specifies additional detail to some sections of ISO 14230
Keyword Protocol 2000.
This part of ISO 14230 specifies the requirements of the implementation of the Diagnostic Services specified
in ISO 14229, including:
The vehicle environment to which this standard applies may consist of:
• a single tester which may be temporarily connected to the on-vehicle diagnostic data link and
• several on-vehicle Electronic Control Units connected directly or indirectly.
ECU ECU
Tester Tester
Gatew ay ECU ECU
may or m ay not be
ECU ECU
within the scope
of the proposal
In vehicle 1, the ECUs are connected by an internal data link and indirectly connected to the
diagnostic data link through a gateway. This docum ent applies to the diagnostic com m unications
over the diagnostic data link; the diagnostic com m unications over the internal data link m ay conform
to this document or to another protocol.
In vehicle 2, the ECUs are directly connected to the diagnostic data link.
Figure 2 - Vehicle diagnostic architecture
Page: 11 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
2 - Normative reference
2.1 - ISO standards
The following standards contain provisions which, through reference in this text, constitute provisions of this
document. All standards are subject to revision, and parties to agreement based on this document are
encouraged to investigate the possibility of applying the most recent editions of the standards listed below.
Members of ISO maintain registers of currently valid International Standards.
Note: All documents which are of the status “Draft International Standard” are marked “DIS”!
All documents which are of the status “Working Draft” are marked “WD”!
SAE J1930 E/E Systems Diagnostic Terms, Definitions, Abbreviations & Acronyms
Page: 12 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
KWP 2000 Part 3 = ISO 14230-3 Keyword Protocol 2000 Part 3: Implementation
KWP 2000 Part 2 = ISO 14230-2 Keyword Protocol 2000 Part 2: Data Link Layer
Service identifier values "$00 - $0F" and "$40 - $4F" are reserved to be defined in SAE J1979 which currently
only includes functionally addressed services. The service identifier values which are defined in this
document are indicated by bold font.
There is a one-to-one correspondence between request messages and positive response messages, with "bit
6" of the service identifier hex value indicating the service type.
3.2.2 - Definitions used in this document
The "default timing" shall always reference the timing parameter values as initiated by the keybytes sent by the server
(ECU) at the start of the communication. The timing parameter values and possible keybytes are specified in the KWP
2000 Part 2 Data Link Layer Recommended Practice.
Page: 13 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 14 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 15 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 16 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
4 - Conventions
This document is guided by the conventions discussed in the OSI Service Conventions (ISO/TR 8509) as
they apply to the diagnostic services. These conventions define the interactions between the service user and
the service provider. Information is passed between the service user and the service provider by service
primitives, which may convey parameters.
4.1 - Service description convention
This section defines the layout used to describe the diagnostic services. It includes:
• Parameter Definition
• Message Data Bytes
• Message Description
• Message Flow Example
• Implementation Example
4.1.1 - Parameter definition
This section defines the use and the values of parameters used by the service.
4.1.2 - Message data bytes
The definition of each message includes a table which lists the parameters of its primitives: request/indication
("Req/Ind"), response/confirmation ("Rsp/Cnf") for positive or negative result. All have the same structure.
The first table (refer to section 4.1.2.1) describes the request message, the second table (refer to section
4.1.2.2) the positive response message and the third table (refer to section 4.1.2.3) the negative response
message. Thus, only a positive or a negative response message may be used; both are listed in separate
tables because the list of parameters differ between positive and negative response messages.
4.1.2.1 - Request message
The following table shows a general service table structure and its syntax.
*) Cvt. = Convention; This column specifies the convention of each type used in a message.
Page: 17 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
C1) Condition 1: The header bytes "Target" and "Source" depend on the content of the "Format Byte" which
is specified in the ISO 14230-2 (KWP 2000 Part 2: Data Link Layer) document. Both either exist or do
not exist in the header of each message.
C2) Condition 2: The header byte "Length" depends on the content of the "Format Byte" which is specified in
the ISO 14230-2 (KWP 2000 Part 2: Data Link Layer) document.
C3) Condition 3: These parameters may be either mandatory (M) or user optional (U), depending on the
individual message.
The content of each message table shown in bold font is defined in the document ISO 14230-2 (KWP 2000
Part 2: Data Link Layer).
For a given primitive, the presence of each parameter is described by one of the following values:
• M: mandatory;
• U: user option; the parameter may or may not be supplied, depending on dynamic usage by the user;
• C: conditional; the presence of the parameter depends upon other parameters within the service;
• S: mandatory (unless specified otherwise) selection of a parameter from a parameter list;
4.1.2.2 - Positive response message
A positive response message shall be sent by the server if it is able to completely perform the requested
actions.
Page: 18 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
For simplification all messages are described without any identifiers and/or data values. Details of messages
are always specified in the section: Message data bytes.
Note: Above message flow example is not documented for each service. Only services, which call for more
detailed message flow description shall have their own message flow section.
4.1.5 - Implementation example
Page: 19 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 service name.PosRspSId[ xx negativeResponse Service Identifier 7F
recordValue#1 xx service name.ReqSId[ xx
: : responseCode { refer to section 4.4 }] xx
recordValue#m] xx
return(main) return(responseCode)
Diagnostic Management This functional unit includes Keyword Protocol 2000 services which are
used to realize diagnostic management functions between the client
(tester) and the server (ECU).
Data Transmission This functional unit includes Keyword Protocol 2000 services which are
used to realize data transmission functions between the client (tester) and
the server (ECU).
Stored Data Transmission This functional unit includes Keyword Protocol 2000 services which are
used to realize stored data transmission functions between the client
(tester) and the server (ECU).
Input / Output Control This functional unit includes Keyword Protocol 2000 services which are
used to realize input / output control functions between the client (tester)
and the server (ECU).
Remote Activation of Routine This functional unit includes Keyword Protocol 2000 services which are
used to realize remote activation of routine functions between the client
(tester) and the server (ECU).
Upload / Download This functional unit includes Keyword Protocol 2000 services which are
used to realize upload / download functions between the client (tester) and
the server (ECU).
Page: 20 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
The different symbols used in the table shall indicate the level of importance of each diagnostic service based on the
diagnostic mode enabled.
The header of the "Service Identifier value summary table" does build a reference between the parameter
diagnosticMode (columns 3 through 6) of the startDiagnosticSession service. In addition, the header line "Security
Access Required" has been added. The "YES/NO" per column shall indicate, which diagnosticMode shall be followed
by a securityAccess service. The parameter accessMode of the securityAccess service may have different levels of
security for seed and key creation/manipulation.
• The left column of the following table lists all services of the Diagnostic Services Specification.
• The 1st column specifies the Mnemonic of the service.
• The 2nd column indicates which services of the ISO 14230 Keyword Protocol 2000 are included in the KWP 2000
Part 3 Implementation Recommended Practice document.
• The 3rd column specifies the services of the "defaultMode, OBD II Mode, standardDiagnosticMode,
ECUAdjustmentMode, and ECUVariantCodingMode" which are recommended to be implemented in each
server (ECU) if the electronic system supports the functionality of these services. Those ECUs which comply with
the CARB requirements which must be compliant to SAE J1979 E/E Diagnostic Test Modes shall support the
header/frame for each service as specified in the Keyword Protocol 2000 Part 2 Data Link Layer Recommended
Practice.
• The 4th column specifies the services of the "ECUProgrammingMode," which shall be implemented to program
the memory (e.g. flash) of the server (ECU).
• The 5th column specifies the services of the "ECUDevelopmentMode" which may be implemented during the
development of the electronic system.
• The 6th column assigns the KWP 2000 Implementation "Request Hex Value".
• The 7th column assigns the KWP 2000 Implementation "Positive Response Hex Value". The positive response
service identifier values are built from the request service identifier values by setting
"bit 6 = 1".
• The 8th column indicates if a "negative response message (ServiceId = $7F)" shall be supported by the server
(ECU).
• The 9th column includes the "section number" of each service.
• The 3rd, 4th and 5th column specify, in addition to above description, the
"endOfLineVehicleManufacturerMode and endOfLineSystemSupplierMode". Those diagnostic modes are
recommended to be used for end of line testing at the system supplier site (e.g. ECU testing) or vehicle end of line
testing at the vehicle manufacturer site (e.g. vehicle testing).
Page: 21 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
The header of the table indicates default / standardDiag. / OBD II / ECUAdjustment / ECUVariantCoding - Mode
which diagnosticMode (session) ê
enables which set of Diagnostic ECUProgrammingMode
Services. ê
ECUDevelopmentMode
ê
endOfLineVehicleManufacturerMode, endOfLineSystemSupplierMode
ê ê ê
Column Number 1 2 3 4 5 6 7 8 9
Security Access Required NO YES YES
Diagnostic Service Name Mnemonic KWP Default / ECU ECU Req. Pos. Neg. Section
(3.3.1) 2000 Std. Diag. / Prog Dev. Value Rsp. Rsp. No.
Part No OBD II Md. Mode Mode Value Value
startCommunication STC ]
2,] ¨ ¨ ¨ 81 C1 7F ]
5.1,]
testerPresent TP 3 ¨ ¨ ¨ 3E 7E 7F 6.4
stopCommunication SPC ]
2,] ¨ ¨ ¨ 82 C2 7F ]
5.2,]
readEcuIdentification REI 3 u u u 1A 5A 7F 6.6
readDTCByStatus RDTCBS 3 u u 18 58 7F 8.2
clearDiagnosticInformation CDI 3 u u 14 54 7F 8.5
SAE J1979 Diag. Test Modes J1979M 3 n 00-0F 40-4F 7F 12.2
accessTimingParameters ATP ]
2,] 83 C3 7F ]
5.3,]
startDiagnosticSession STDS 3 u u 10 50 7F 6.1
readDataByLocalIdentifier RDBLI 3 u 21 61 7F 7.1
dynamicallyDefineLocalId. DDLI 3 2C 6C 7F 7.4
inputOutputCtrlByLocalId. IOCBLI 3 30 70 7F 9.1
startRoutineByLocalIdentifier STRBLI 3 31 71 7F 10.1
stopRoutineByLocalIdentifier SPRBLI 3 32 72 7F 10.3
req.RoutineResultsByLocalId. RRRBLI 3 33 73 7F 10.5
writeDataByLocalIdentifier WDBLI 3 3B 7B 7F 7.5
readFreezeFrameData RFFD 3 12 52 7F 8.4
ecuReset ER 3 11 51 7F 6.5
readStatusOfDTC RSODTC 3 17 57 7F 8.3
readDataByCommonId. RDBCI 3 22 62 7F 7.2
stopDiagnosticSession SPDS 3 u 20 60 7F 6.2
securityAccess SA 3 27 67 7F 6.3
requestDownload RD 3 u u 34 74 7F 11.1
requestUpload RU 3 u 35 75 7F 11.2
transferData TD 3 u u 36 76 7F 11.3
requestTransferExit RTE 3 u u 37 77 7F 11.4
startRoutineByAddress STRBA 3 u 38 78 7F 10.2
stopRoutineByAddress SPRBA 3 u 39 79 7F 10.4
req.RoutineResultsByAddress RRRBA 3 u 3A 7A 7F 10.6
readMemoryByAddress RMBA 3 u 23 63 7F 7.3
writeMemoryByAddress WMBA 3 u 3D 7D 7F 7.7
writeDataByCommonId. WDBCI 3 2E 6E 7F 7.6
inputOutputCtrlByCommonId. IOCBCI 3 2F 6F 7F 9.2
escCode (KWP 2000 only) EC 3 80 C0 7F 12.1
readDiagnosticTroubleCodes - 13 53 7F 8.1
setDataRates - 26 66 7F 7.8
Table 4.3 - Service Identifier value summary table
] Communication services are specified in the document ISO 14230-2 KWP 2000 Part 2: Data Link Layer!
¨ Service shall be implemented in order to be able to start, maintain, and stop communication!
u Essential service in this diagnostic mode!
n Essential service in this diagnostic mode if ECU supports OBD II requirements!
Selection of service is vehicle manufacturer/project specific; the data content is project specific!
Selection of service requires additional detail to be specified by vehicle manufacturer/system supplier; the data
content/structure and/or method is project specific!
Service shall be reserved mainly for legislative purposes (e.g. emission related test data; future EOBD)!
Page: 22 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Start of service
NO
V alid M ess age? N o R espons e M ess age
Y ES
Y ES
cas e #1
YE S R C = $78
E xtended P 2
tim ing w indow ?
NO
cas e #2
YE S R C = $23
Serv ice in
progres s ?
NO
Pos itiv e R es pons e NO
cas e #3
M es sage R eady ? YE S R C = $21
Serv er bus y ?
YE S
NO
cas e #4
YE S R C = $10
G eneral rejec t?
NO
R C = $xx
End of service
Page: 23 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 24 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 25 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 26 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 27 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 28 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 29 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 30 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
P3* : The values of the "P3*" timing parameters shall be less than the value of "P2min" in order to allow the
client (tester) to send a new request message (refer to section 4.4.1.3 in KWP 2000 Part 2: Data Link Layer
Recommended Practice).
Above message flow describes a physical addressed service request with the periodic transmission mode
enabled. The request message is followed by multiple positive response messages from the physically
addressed server. The periodically transmitted response messages are terminated by the client with a
stopDiagnosticSession request message send to the server which has been initiated within the "P3*" timing
window.
Page: 31 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
5.3.1.3 - Physical addressed service and negative response message(s) with "routineNotComplete
($23)" and "busy-RepeatRequest ($21)"
The table below shows a message flow which describes a physical addressed service request followed by a
negative response message with the response code set to "routineNotComplete ($23)".
Page: 32 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
5.3.1.4 - Physical addressed service with "server can not send a positive response within required
timing"
5.3.1.4.1 - Physical addressed service and negative response message with "reqCorrectlyRcvd-
RspPending ($78) within Normal or Extended Timing"
The table below shows a message flow which describes a physical addressed service request followed by a
negative response message with the response code set to "requestCorrectlyReceived-ResponsePending".
time client (Tester) server (ECU)
P3 <Service Name> Request[...]
P2 <Service Name> NegRsp#1[reqCorrectlyRcvd-RspPending ($78)]
:
P2* <Service Name> NegRsp#n[reqCorrectlyRcvd-RspPending ($78)]
P2* <Service Name> PositiveResponse[...]
P3 <Service Name> Other Request[...]
P2 <Service Name> Other PositiveResponse[...]
Table 5.3.1.4.1 - Example of physical addressing and negative response with "reqCorrectlyRcvd-RspPending
($78)"
P2* : P2min to P3max (refer to section 4.4.1 in ISO 14230-2 KWP 2000 Part 2: Data Link Layer Recommended
Practice)
Above message flow example is based on a request message from the client which cause the server to
respond with one or multiple negative response message including the negative response code
"requestCorrectlyReceived-ResponsePending ($78)".
This response code indicates that the request message was received correctly, and that any parameters in
the request message were valid, but the action to be performed may not be completed yet. This response
code can be used to indicate that the request message was properly received and does not need to be
retransmitted, but the server is not yet ready to receive another request.
The negative response message may be sent once or multiple times within a service if required by the
server!
During the period of (a) negative response message(s) the testerPresent service shall be disabled in the
client!
This response code shall only be used in a negative response message if the server will not be able to
receive further request messages from the client within the P3 timing window. This may be the case if the
server does data processing or executes a routine which does not allow any attention to serial
communication.
Note: The communication timing method is specified in section "4.4.1 Timing exceptions" in the ISO 14230-
2 Keyword Protocol 2000 Part 2: Data Link Layer Recommended Practice!
Page: 33 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
5.3.1.4.2 - Physical addressed service with "server can not send a positive response within Default
Timing"
The table below shows a message flow which describes a physical addressed service request followed by a
positive response message sent with previously modified timing.
Above message flow example describes the method of modifying the timing parameter values in the server
and the client by using the accessTimingParameters service as specified in the ISO 14230-2 Keyword
Protocol 2000 Part 2: Data Link Layer Recommended Practice.
This method shall be used in case a server does not support a negative response message with the
response code "requestCorrectlyReceived-ResponsePending ($78)".
Page: 34 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Above message flow example is based on a functional request message sent by the client. An unknown
number of servers has been initialized previously (e.g. fast initialisation by wake up pattern) which send
positive and negative response messages.
5.3.2.2 - Functional addressed service and negative response message(s) with
"routineNotComplete ($23)" and "busy-RepeatRequest ($21)"
The table below shows a message flow which describes a functional addressed service request followed by a
negative response message with the response code set to "routineNotComplete ($23)" from one (1) of three
(3) server. All other servers send positive response messages.
Page: 35 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Above message flow example is based on a functional request message from the client which cause one
server (ECU#1) to respond with a negative response message including the negative response code
"routineNotComplete ($23)". The other servers (ECU#2, ECU#3) send a positive response message.
The response code indicates that the request message was properly received by the server and the
routine/task/function (initiated by the request message) is in process, but not yet completed. If the client
repeats or sends another functional request message the server shall "not reinitiate the task" (in case of the
same request message) if the initial task has not been completed. The server shall send another negative
response message with the response code "busy-RepeatRequest ($21)". The negative response message
shall be sent on each functional request message as long as the server has not yet completed the initial
routine/task/function. If the server (ECU#1) has finished the routine/task/function, it shall respond with either
a positive response message or a negative response message with a response code not equal to "busy-
RepeatRequest ($21)".
The communication timing is not affected!
P2* : P2min to P3max (refer to section 4.4.1 in ISO 14230-2 KWP 2000 Part 2: Data Link Layer Recommended
Practice)
Above message flow example is based on a request message from the client which cause the server to
respond with one or multiple negative response message including the negative response code
"requestCorrectlyReceived-ResponsePending". This response code indicates that the request message was
received correctly, and that any parameters in the request message were valid, but the action to be
performed may not be completed yet. This response code can be used to indicate that the request message
was properly received and does not need to be retransmitted, but the server is not yet ready to receive
another request. The negative response message may be sent once or multiple times within a service if
required by the server! During the period of (a) negative response message(s) the testerPresent service shall
be disabled in the client!
Page: 36 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
This response code shall only be used in a negative response message if the server will not be able to
receive further request messages from the client within the P3 timing window. This may be the case if the
server does data processing or executes a routine which does not allow any attention to serial
communication.
Note: The communication timing method is specified in section "4.4.1 Timing exceptions" in the ISO 14230-
2 Keyword Protocol 2000 Part 2: Data Link Layer Recommended Practice!
Above scaling table specifies the general structure of scaling tables referenced by this document. Each parameter scaling
structure starts with a scalingOffset, one or multiple parameter identification bytes (#1 to #k) and ends with one or
multiple scaling bytes (#1.1 to #1.m). In case the ECU consists of e.g. two (2) micro controllers and therefore each has
its own softwarte identification is possible to use the identificationOption “systemSupplierECUSoftwareNumber” and
e.g. “systemSupplierECUSoftwareVersionNumber” twice (one for each micro controller). This configuration is
described in section 6.6.5.2. The following is a specification of each parameter type used in the scaling table.
5.4.2.1 - ScalingOffset
The scalingOffset (SO_) is of type offset and is used to build a linked list of scaling structures referenced by a single
identificationOption. The ScalingOffset = 'FF' indicates an EOT (End of Table).
Page: 37 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 38 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 39 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 40 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 41 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
• If no diagnostic session has been requested by the client after startCommunication a default session shall
be automatically enabled in the server. The default session shall support at least the following services:
"stopCommunication service" ISO 14230-2 (KWP 2000 Part 2: Data Link Layer Recommended Practice)
"testerPresent service" ISO 14230-3 (KWP 2000 Part 3: Implementation Recommended Practice)
Refer to table 4.3 Service Identifier value summary table
• If a diagnostic session has been requested by the client which is already running, the server shall send a
positive response message.
• Whenever a new diagnostic session is requested by the client, the server shall first send a
startDiagnosticSession positive response message before the new session becomes active in the server.
If the server sends a negative response message with the startDiagnosticSession request service
identifier the current session shall continue.
• There shall be only one session active at a time. A diagnostic session enables a specific set of KWP 2000
services which shall be defined by the vehicle manufacturer. A session can enable vehicle manufacturer
specific services which are not part of this document.
Page: 42 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
STEP#1 startDiagnosticSession(DM_ECUPM)
time Client (tester) Request Message Hex
P3 startDiagnosticSession.ReqSId[ 10
diagnosticMode = ECUProgrammingMode] 85
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 startDiagnosticSession.PosRspSId[ 50 negativeResponse Service Identifier 7F
diagnosticMode = ECUProgrammingMode] 85 startDiagnosticSession.ReqSId[ 10
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Note: This example assumes that a "Point to Point" communication has been established between a server (ECU) and
a client (tester). The parameter baudrateIdentifier used in the startDiagnosticSession request message specifies
the baudrate to become active.
Step#1 describes the startDiagnosticSession service to be used to switch to a high speed baudrate of 115.2KBaud.
STEP#1 startDiagnosticSession(DM_ECUPM, BI_PC115200)
time Client (tester) Request Message Hex
P3 startDiagnosticSession.ReqSId[ 10
diagnosticMode = ECUProgrammingMode 85
baudrateIdentifier] 05
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 startDiagnosticSession.PosRspSId[ 50 negativeResponse Service Identifier 7F
diagnosticMode = ECUProgrammingMode 85 startDiagnosticSession.ReqSId[ 10
baudrateIdentifier] 05 responseCode { refer to section 4.4 }] xx
{ server and client switch to new baudrate }
goto STEP#2 return(responseCode)
After completion of the positive response message the new baudrate of 115.2 KBaud becomes active. If a negative
response with the startDiagnosticSession responseServiceId has been received by the client (tester) both, the server
(ECU) and the client (tester) shall proceed with the standardised KWP 2000 baudrate of 10.4 Kbaud.
Page: 43 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Step#2 describes the startDiagnosticSession service to be used to switch to the standard baudrate of 10.4 KBaud. In this
case no baudrateIdentifier parameter shall be used in the request message.
Note: Instead of starting a new diagnostic session in order to switch to the standard baudrate of 10.4 kBaud, a
stopDiagnosticSession service can be used!
STEP#2 startDiagnosticSession(DM_DT_SD_OBDIIM)
time Client (tester) Request Message Hex
P3 startDiagnosticSession.ReqSId[ 10
diagnosticMode = defaultMode-StandardDiagnosticMode-OBDIIMode] 81
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 startDiagnosticSession.PosRspSId[ 50 negativeResponse Service Identifier 7F
diagnosticMode = defaultMode- 81 startDiagnosticSession.ReqSId[ 10
StandardDiagnosticMode-OBDIIMode] responseCode { refer to section 4.4 }] xx
{ server and client switch to 10.4 kBaud }
return(main) return(responseCode)
Note: This example assumes that a "Point to Point" communication has been established between a server (ECU) and
a client (tester).
Step#1 describes the startDiagnosticSession service to be used to switch to a user defined baudrate of 150 KBaud.
STEP#1 startDiagnosticSession(DM_ECUPM, BI_SB)
time Client (tester) Request Message Hex
P3 startDiagnosticSession.ReqSId[ 10
diagnosticMode = ECUProgrammingMode 85
baudrateIdentifier=specificBaudrate 06
baudrate (High Byte) { 150 Kbaud } 02
baudrate (Middle Byte) { “ } 49
baudrate (Low Byte) { “ }] F0
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 startDiagnosticSession.PosRspSId[ 50 negativeResponse Service Identifier 7F
diagnosticMode = ECUProgrammingMode 85 startDiagnosticSession.ReqSId[ 10
baudrateIdentifier] 06 responseCode { refer to section 4.4 }] xx
{ server and client switch to new baudrate }
goto STEP#2 of section 6.1.5.2.2 return(responseCode)
After successful completion of the positive response message the new baudrate of 150 KBaud becomes active. If a
negative response with the startDiagnosticSession responseServiceId has been received by the client (tester) both, the
server (ECU) and the client (tester) shall proceed with the standardised KWP 2000 baudrate of 10.4 Kbaud.
6.1.5.2.4 - Message flow startDiagnosticSession with periodicTransmissions
This message flow is specified in KWP 2000 Part 2: Data Link Layer Recommended Practice because of its impact
in the communication within KWP 2000.
Page: 44 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 45 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 stopDiagnosticSession()
time Client (tester) Request Message Hex
P3 stopDiagnosticSession.ReqSId 20
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 stopDiagnosticSession.PosRspSId 60 negativeResponse Service Identifier 7F
stopDiagnosticSession.ReqSId[ 20
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Page: 46 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 47 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 48 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 49 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 securityAccess(AM_RSD)
time Client (tester) Request Message Hex
P3 securityAccess.ReqSId[ 27
accessMode = requestSeed] 01
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 securityAccess.PosRspSId[ 67 negativeResponse Service Identifier 7F
accessMode = requestSeed 01 securityAccess.ReqSId[ 27
seed (High Byte) 36 responseCode { refer to section 4.4 }] xx
seed (Low Byte)] 75
goto STEP#2 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 securityAccess.PosRspSId[ 67 negativeResponse Service Identifier 7F
accessMode = sendKey 02 securityAccess.ReqSId[ 27
securityAccessAllowed] 34 responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
STEP#1 securityAccess(AM_RSD)
time Client (tester) Request Message Hex
P3 securityAccess.ReqSId[ 27
accessMode = requestSeed] 01
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 securityAccess.PosRspSId[ 67 negativeResponse Service Identifier 7F
accessMode = requestSeed 01 securityAccess.ReqSId[ 27
seed (High Byte) 00 responseCode { refer to section 4.4 }] xx
seed (Low Byte)] 00
return(main) return(responseCode)
Page: 50 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
• The presence of this service shall keep communication active between client and server.
• The presence of this service shall indicate that the system should remain in a diagnostic mode of
operation.
Page: 51 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 testerPresent()
time Client (tester) Request Message Hex
P3 testerPresent.ReqSId 3E
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 testerPresent.PosRspSId 7E negativeResponse Service Identifier 7F
testerPresent.ReqSId[ 3E
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Page: 52 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
• The parameter resetStatus (RS_) is used by the ecuReset positive response message to provide
information about the status of the reset(s). Format and length of this parameter are vehicle manufacturer
specific.
A possible implementation would be to report the number of resets performed by the server(s) after the last
full power down / power up cycle (key off/on).
6.5.4 - Message flow example
See message flow examples of a Physically Addressed Service in section 5.3.1.1 and a Functionally
Addressed Service in section 5.3.2.1.
6.5.5 - Implementation example of ecuReset
Page: 53 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 ecuReset(RM_PO)
time Client (tester) Request Message Hex
P3 ecuReset.ReqSId[ 11
resetMode = powerOn] 01
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 ecuReset.PosRspSId 51 negativeResponse Service Identifier 7F
ecuReset.ReqSId[ 11
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Page: 54 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 55 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
• The parameter identificationRecordValue (IRV_) is used by the readEcuIdentification positive response message to
provide the identification data and/or scaling data to the client (tester). The content of the identification record is not
defined in this document and is vehicle manufacturer specific.
6.6.2 - Message data bytes
Data Byte Parameter Name Cvt Hex Value Mnemonic
#1 readEcuIdentification Request Service Id M 1A REI
#2 identificationOption=[ refer to table 6.6.1 ] M 80-9F IO_
Table 6.6.2.1 - readEcuIdentification Request Message
Page: 56 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
• The 1st column (ECU Identification Option Description) describes the ECU identification option.
• The 2nd column (ECU Identification Data) includes the ECU identification data as they shall be displayed in the
client (tester).
• The 3rd column (ECU Identification Scaling) includes the ECU identification scaling table data. This column is
broken into five (5) additional columns for more detailed explanation.
• Message flow STEP#1 shows a readECUIdentification request message which is sent to the server (ECU) with the
identificationOption set to ECUIdentificationScalingTable. The server (ECU) shall send a positive response message
if it supports the identificationOption. The identificationOption is specified in section 6.6.1.
• Message flow STEP#2 shows a readECUIdentification request message which is sent to the server (ECU) with the
identificationOption set to ECUIdentificationDataTable. The server (ECU) shall send a positive response message if
it supports the identificationOption.
• Message flow STEP#3 shows a readECUIdentification request message which is sent to the server (ECU) with the
identificationOption set to VIN. The server (ECU) shall send a positive response message if it supports the
identificationOption.
Page: 57 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 readECUIdentification(IO_ECUIST)
time Client (tester) Request Message Hex
P3 readECUIdentification.ReqSId[ 1A
identificationOption = ECUIdentificationScalingTable] 81
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readECUIdentification.PosRspSId[ 5A negativeResponse Service Identifier 7F
identificationOption = ECUIdentificationScalingTable 81 readECUIdentification.ReqSId[ 1A
ScalingOffset { pointer position + $04 } 04 responseCode { refer to section 4.4 }] xx
VIN 90
ScalingByte#1 { ASCII, 15 data bytes } 6F
ScalingByte#1. { ASCII, 2 data bytes } 62
ScalingOffset { pointer position + $03 } 03
vehicleManufacturerHardwareNumber 91
ScalingByte#1 { ASCII, 11 data bytes } 6B
ScalingOffset { pointer position + $03 } 03
systemSupplierECUHardwareNumber 92
ScalingByte#1 { unsigned numeric, 2 data bytes } 02
ScalingOffset { pointer position + $03 } 03
systemSupplierECUSoftwareNumber { µP 1 } 94
ScalingByte#1 { unsigned numeric, 2 data bytes } 02
ScalingOffset { pointer position + $03 } 03
systemSupplierECUS/WVersionNumber { µP 1 } 95
ScalingByte#1 { unsigned numeric, 1 data bytes } 01
ScalingOffset { pointer position + $03 } 03
systemSupplierECUSoftwareNumber { µP 2 } 94
ScalingByte#1 { unsigned numeric, 2 data bytes } 02
ScalingOffset { pointer position + $03 } 03
systemSupplierECUS/WVersionNumber { µP 2 } 95
ScalingByte#1 { unsigned numeric, 1 data bytes } 01
ScalingOffset { pointer position + $03 } 03
exhaustRegulationOrTypeApprovalNumber 96
ScalingByte#1 { ASCII, 6 data bytes } 66
ScalingOffset { pointer position + $03 } 03
SystemNameOrEngineType 97
ScalingByte#1 { ASCII, 6 data bytes } 66
ScalingOffset { pointer position + $03 } 03
repairShopCodeOrTesterSerialNumber 98
ScalingByte#1 { unsigned numeric, 3 data bytes } 03
ScalingOffset { pointer position + $03 } 03
ProgrammingDate (YYYY-MM-DD) 99
ScalingByte#1 { BCD, 4 data bytes } 44
ScalingOffset { End of Table }] FF
goto STEP#2 return(responseCode)
Page: 58 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
STEP#2 readECUIdentification(IO_ECUIDT)
time Client (tester) Request Message Hex
P3 readECUIdentification.ReqSId[ 1A
identificationOption = ECUIdentificationDataTable] 80
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readECUIdentification.PosRspSId[ 5A negativeResponse Service Identifier 7F
identificationOption = ECUIdentificationDataTable 80 readECUIdentification.ReqSId[ 1A
VIN {W} 57 responseCode { refer to section 4.4 }] xx
VIN {0} 30
VIN {L} 4C
VIN {0} 30
VIN {0} 30
VIN {0} 30
VIN {0} 30
VIN {4} 34
VIN {3} 33
VIN {M} 4D
VIN {B} 42
VIN {5} 35
VIN {4} 34
VIN {1} 31
VIN {3} 33
VIN {2} 32
VIN {6} 36
Vehicle Manufacturer Hardware Number {9} 39
Vehicle Manufacturer Hardware Number {0} 30
Vehicle Manufacturer Hardware Number {2} 32
Vehicle Manufacturer Hardware Number {5} 35
Vehicle Manufacturer Hardware Number {4} 34
Vehicle Manufacturer Hardware Number {8} 38
Vehicle Manufacturer Hardware Number {6} 36
Vehicle Manufacturer Hardware Number {1} 31
Vehicle Manufacturer Hardware Number { } 20
Vehicle Manufacturer Hardware Number {G} 47
Vehicle Manufacturer Hardware Number {D} 44
System Supplier ECU Hardware Number { 10433 } 28
System Supplier ECU Hardware Number C1
System Supplier ECU S/W Number µP 1 { 33456 } 82
System Supplier ECU S/W Number µP 1 B0
System Supplier ECU S/W Version No µP 1 {1} 01
System Supplier ECU S/W Number µP 2 { 53129 } CF
System Supplier ECU S/W Number µP 2 89
System Supplier ECU S/W Version No µP 2 {1} 01
Exhaust Regulat. / Type Approval Number {B} 42
Exhaust Regulat. / Type Approval Number {9} 39
Exhaust Regulat. / Type Approval Number {4} 34
Exhaust Regulat. / Type Approval Number {0} 30
Exhaust Regulat. / Type Approval Number {0} 30
Exhaust Regulat. / Type Approval Number {1} 31
Engine Name {X} 58
Engine Name {2} 32
Engine Name {0} 30
Engine Name {X} 58
Engine Name {E} 45
Engine Name {V} 56
Repair Shop Code/Tester Serial No. { 6359984 } 61
Repair Shop Code/Tester Serial No. 06
Repair Shop Code/Tester Serial No. 60
Programming Date { 1994-09-11 } 19
Programming Date 94
Programming Date 09
Programming Date 11
return(main) return(responseCode)
Page: 59 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#3 readECUIdentification(IO_VIN)
time Client (tester) Request Message Hex
P3 readECUIdentification.ReqSId[ 1A
identificationOption = VIN] 90
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readECUIdentification.PosRspSId[ 5A negativeResponse Service Identifier 7F
identificationOption = VIN 90 readECUIdentification.ReqSId[ 1A
VIN {W} 57 responseCode { refer to section 4.4 }] xx
VIN {0} 30
VIN {L} 4C
VIN {0} 30
VIN {0} 30
VIN {0} 30
VIN {0} 30
VIN {4} 34
VIN {3} 33
VIN {M} 4D
VIN {B} 42
VIN {5} 35
VIN {4} 34
VIN {1} 31
VIN {3} 33
VIN {2} 32
VIN { 6 }] 36
return(main) return(responseCode)
Page: 60 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
• The parameter recordValue (RV_) is used by the readDataByLocalIdentifier positive response message to provide
the data record identified by the recordLocalIdentifier to the client (tester). The user optional recordValues shall
include ECU specific input, internal and output data.
7.1.2 - Message data bytes
Data Byte Parameter Name Cvt Hex Value Mnemonic
#1 readDataByLocalIdentifier Request Service Id M 21 RDBLI
#2 recordLocalIdentifier=[ refer to table 7.1.1 ] M xx RLI_...
Table 7.1.2.1 - readDataByLocalIdentifier Request Message
Page: 61 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 readDataByLocalIdentifier(RLl_RECORD#10)
time Client (tester) Request Message Hex
P3 readDataByLocalIdentifier.ReqSId[ 21
recordLocalIdentifier=record#10] 0A
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDataByLocalIdentifier.PosRspSId[ 61 negativeResponse Service Identifier 7F
recordLocalIdentifier=record#10 0A readDataByLocalIdentifier.ReqSId[ 21
RV_B+ { Battery Positive Voltage } 8C responseCode { refer to section 4.4 }] xx
RV_ECT { Engine Coolant Temperature } A6
RV_TPS { Throttle Position Sensor } 66
RV_O2SB1 { Oxygen Sensor Bank 1 } A0
RV_... xx
: :
RV_...] xx
return(main) return(responseCode)
Page: 62 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 63 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 readDataByCommonIdentifier(RCI_B+)
time Client (tester) Request Message Hex
P3 readDataByCommonIdentifier.ReqSId[ 22
recordCommonIdentifier { High Byte } = Battery Positive Voltage 00
recordCommonIdentifier { Low Byte } = Battery Positive Voltage] 10
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDataByCommonIdentifier.PosRspSId[ 62 negativeResponse Service Identifier 7F
recordCommonIdentifier { High Byte }{ B+ } 00 readDataByCommonIdentifier.ReqSId[ 22
recordCommonIdentifier { Low Byte } { B+ } 10 responseCode { refer to section 4.4 }] xx
RV_B+ { B+ = 13.8 V (resolution: 100mV)}] 8A
return(main) return(responseCode)
Page: 64 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readMemoryByAddress.PosRspSId[ 63 negativeResponse Service Identifier 7F
externalRAMCell#1 00 readMemoryByAddress.ReqSId[ 23
externalRAMCell#2 46 responseCode { refer to section 4.4 }] xx
externalRAMCell#3] FB
return(main) return(responseCode)
Page: 65 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 66 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 67 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
Page: 68 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 69 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
P3 readDataByLocalId.Request[...]
P2 readDataByLocalId.PositiveResponse[...]
Table 7.4.4.1 - Message flow example of dynamicallyDefineLocalIdentifier service followed by a
readDataByLocalIdentifier service
7.4.5 - Implementation example of dynamicallyDefineLocalIdentifier
Page: 70 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
This table specifies a readDataByLocalIdentifier message referenced by the recordLocalIdentifier (RLI = $01) which is
used to dynamically create a new data record which includes only a few small data records out of the entire message.
Header Service RLI PIRLI PIRLI: PIRLI PIRLI: $0F -$11 PIRLI PIRLI: $15 CS
Id $01 - $06 $07 $08 - $0E RV_ES $12 - $14 RV_TP
RV_ECT
$xx - $xx $61 $01 $xx - $xx $8C $xx - $xx $0060FE $xx - $xx $30 $xx
Table 7.4.5.1.1 - Data record referenced by RLI = $01 of the readDataByLocalIdentifier message
The client (tester) shall either dynamically create the information specified in the table 7.4.5.1.2 (based on technician
parameter selection) or the information may be preprogrammed in the memory of the client (tester). The table
information is required to create the dynamicallyDefineLocalIdentifier request message(s).
Definition of the dynamicallyDefinedLocalIdentifier ($F0) with the definitionMode defineByLocalIdentifier (DNM_DBLI)
Parameter Name definition positionInDynamically memory recordLocal positionInRecord
Mode DefinedLocalIdentifier Size Identifier LocalIdentifier
(RV_) (DNM_) (PIDDDLI) (MS_) (RLI_) (PIRLI)
Engine Coolant Temperature {RV_ECT} $01 $01 1 byte $01 $07
Engine Speed {RV_ES} $01 $02 3 bytes $01 $0F
Throttle Position Voltage {RV_TP} $01 $05 1 byte $01 $15
Table 7.4.5.1.2 - Data to create the dynamicallyDefineLocalIdentifier request message(s)
Within KWP 2000 the dynamicallyDefineLocalIdentifier service is used to assign a dynamically defined localIdentifier
"$F0" to above three (3) parameters which are accessed by a readDataByLocalIdentifier service. The client (tester)
defines the value "$F0" (refer to table 7.1.1) for this localIdentifier which identifies a new record consisting of the above
three (3) parameters selected by the service technician.
7.4.5.2 - Message flow
Page: 71 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 dynamicallyDefineLocalIdentifier.PosRspSId[ 6C negativeResponse Service Identifier 7F
dynamicallyDefinedLocalIdentifier] F0 dynamicallyDefineLocalIdentifier.ReqSId[ 2C
responseCode { refer to section 4.4 }] xx
goto STEP#2 return(responseCode)
Page: 72 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
time Server (ECU) Positive Response Message PIDDDLI Hex Server (ECU) Negative Response Message Hex
P2 readDataByLocalIdentifier.PosRspSId[ 61 negativeResponse Service Identifier 7F
RLI_F0 { recordLocalIdentifier } F0 readDataByLocalIdentifier.ReqSId[ 21
RV_ECT { Engine Coolant Temperature } 01 8C responseCode { refer to section 4.4 }] xx
RV_ES { Engine Speed } 02 00
RV_ES { Engine Speed } 03 60
RV_ES { Engine Speed } 04 FE
RV_TP { Throttle Position }] 05 30
return(main) return(responseCode)
Page: 73 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 dynamicallyDefineLocalIdentifier.PosRspSId[ 6C negativeResponse Service Identifier 7F
dynamicallyDefinedLocalIdentifier] F1 dynamicallyDefineLocalIdentifier.ReqSId[ 2C
responseCode { refer to section 4.4 }] xx
goto STEP#2 return(responseCode)
time Server (ECU) Positive Response Message PIDDDLI Hex Server (ECU) Negative Response Message Hex
P2 readDataByLocalIdentifier.PosRspSId[ 61 negativeResponse Service Identifier 7F
RLI_F1 { recordLocalIdentifier } F1 readDataByLocalIdentifier.ReqSId[ 21
RV_O2SB1 { O2 Sensor Bank 1 } 01 8C responseCode { refer to section 4.4 }] xx
RV_O2IB1 { O2 Integrator Bank 1 } 02 22
RV_ES { Engine Speed } 03 00
RV_ES { Engine Speed } 04 60
RV_ES { Engine Speed }] 05 FE
return(main) return(responseCode)
Page: 74 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 75 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 dynamicallyDefineLocalIdentifier.PosRspSId[ 6C negativeResponse Service Identifier 7F
dynamicallyDefinedLocalIdentifier] F2 dynamicallyDefineLocalIdentifier.ReqSId[ 2C
responseCode { refer to section 4.4 }] xx
goto STEP#2 return(responseCode)
time Server (ECU) Positive Response Message PIDDDLI Hex Server (ECU) Negative Response Message Hex
P2 readDataByLocalIdentifier.PosRspSId[ 61 negativeResponse Service Identifier 7F
RLI_F2 { recordLocalIdentifier } F2 readDataByLocalIdentifier.ReqSId[ 21
RV_RAMVAR1 { RAM Variable#1 } 01 45 responseCode { refer to section 4.4 }] xx
RV_RAMVAR2 { RAM Variable#2 }] 02 A7
goto STEP#3 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 dynamicallyDefineLocalIdentifier.PosRspSId[ 6C negativeResponse Service Identifier 7F
dynamicallyDefinedLocalIdentifier] F2 dynamicallyDefineLocalIdentifier.ReqSId[ 2C
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Page: 76 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
The recordLocalIdentifier table consists of four (4) columns and multiple lines.
• The 1st column (Hex) includes the "Hex Value" assigned to the recordLocalIdentifier specified in the 2nd column.
• The 2nd column (Description) specifies the recordLocalIdentifier.
• The 3rd column (Cvt) is the convention column which specifies whether the recordLocalIdentifier is "M"
(mandatory) or "U" (User Optional).
• The 4th column (Mnemonic) specifies the mnemonic of this recordLocalIdentifier.
Page: 77 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 writeDataByLocalIdentifier.PosRspSId[ 7B negativeResponse Service Identifier 7F
recordLocalIdentifier = VIN] 90 writeDataByLocalIdentifier.ReqSId[ 3B
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Page: 78 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 79 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#1 writeDataByCommonIdentifier(RCI_RLV)
time Client (tester) Request Message Hex
P3 writeDataByCommonIdentifier.ReqSId[ 2E
recordCommonIdentifier = resetLearnedValues (High Byte) 10
recordCommonIdentifier = resetLearnedValues (Low Byte)] 01
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 writeDataByCommonIdentifier.PosRspSId[ 6E negativeResponse Service Identifier 7F
recordCommonIdentifier (High Byte) 10 writeDataByCommonIdentifier.ReqSId[ 2E
recordCommonIdentifier (Low Byte)] 01 responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
Page: 80 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readMemoryByAddress.PosRspSId 7D negativeResponse Service Identifier 7F
memoryAddress { High Byte } 30 readMemoryByAddress.ReqSId[ 3D
memoryAddress { Middle Byte } FF responseCode { refer to section 4.4 }] xx
memoryAddress { Low Byte } 13
return(main) return(responseCode)
Page: 81 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
The purpose of the service setDataRates is to schedule (a) message(s) for periodic repetition by the server(s) (ECU(s)).
The scheduling of (a) message(s) is in contradiction with the definitions of KWP 2000 Part 2 Data Link Layer
Recommended Practice and therefore not supported.
Note: The main purpose to repeat server messages (client (tester) does not send a new request) is to increase the data
refresh rate of the retrieved data and to enable a "free running mode" in the server (ECU). Adjusting the
server's (ECU's) timing parameters to minimum values will increase the refresh rate of retrieved data:
• P1= inter byte time of ECU response
• P2= inter message time of tester request and ECU response or two ECU responses
• P3= inter message time of ECU responses and start of new tester request
• P4= inter byte time of tester request
Page: 82 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
C1 = condition: This parameter shall be used if the server (ECU) supports SAE J2012 BCD formatted DTCs.
C2 = condition: This parameter shall be used if the server (ECU) supports 2 Byte Hex formatted (2 byte
unsigned numeric) DTCs ($0000 - $FFFF).
8.2.1.1.1 Function groups according to SAE J2012 (DTC Definitions Recommended Practice)
Specific standard values are POWERTRAIN, CHASSIS, BODY, NETWORK COMMUNICATION, ALL (ALL = all
vehicle systems). These are the function groups used in SAE Recommended Practice J2012 - Diagnostic Trouble Codes.
This parameter is of type BCD (Binary Coded Decimal). The table below specifies the possible values for this
parameter.
Page: 83 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
• groupOfDTC = requestByFunction: The parameter groupOfDTC shall be used to identify different DTC groups.
The most significant bits of the high nibble of the high byte are used to "requestByFunction" and are encoded
using the same convention as diagnostic trouble codes are reported. For requestByFunction, the second two bits of
the high nibble of the high byte are '00', and the low nibble of the high byte includes zeroes. This translates to the
following function groups for DTC requests.
8.2.1.1.2 Vehicle Manufacturer defined function groups according to 2 Byte Hex DTC format
Page: 84 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
If the SAE J2012 format is chosen, the 2 bytes are coded as shown in th example below:
Example of DTC "P0130" O2 Sensor Circuit Malfunction (Bank 1, Sensor 1) (SAE J2012)
High Byte Low Byte
High Nibble Low Nibble High Nibble Low Nibble
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0
P 0 1 3 0
• The parameter statusOfDTC (SODTC_...) is used by the server(s) (ECU(s)) in the positive response message to
provide status information for each DTC.
Page: 85 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
The state diagram of the statusOfDTC-Response_DTCStorageState parameter shall provide more detail about the
possible DTCStorageState conditions in the server's (ECU's) memory. The two bits shown in the figure are bit 6 and 5 of
the statusOfDTC-Response parameter.
'00'
'00'
noDTCDetected at
'01' time of request
'10'
DTCNotPresent
at time of DTCMaturing-
request Intermittent at
time of request
DTCPresent
'01' at time of '10'
'11' '11'
request
Page: 86 of 160
KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE OCTOBER 1, 1997
Page: 87 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
The figure below shows a diagram which specifies an example of how the Diagnostic Trouble Code (DTC) detection logic shall be implemented in a server (ECU). The diagram is
splitted into thirteen (13) columns (steps). The step width is a measure of time. The different lines represent: upper four (4) lines consist of a DTC readiness flag, unfiltered DTC
detection, a filtered DTC diagram which shall be used to control the state of the DTCWarningLamp; a DTCStorageState diagram which shows the state of bit ‘5’ and ‘6’ of the
statusOfDTC parameter; a check light diagram which shows the state OFF or ON. The DTC filter is always incremented either to validate a fault detection or to validate the disappearance
of the fault. The state of the filtered DTC only changes if the filter counter reaches the appropriate threshold. Bit ‘6’ of the DTCStorageState indicates whether a fault is detected.
Step Number 0 1 2 3 4 5 6 7 8 9 10 11 12 13
1
DTC-
Readiness- DTCReadinessFlag set to '0' = testComplete (DTC test conditions have been met)
Flag
0
1
Unfiltered
DTC No Fault Fault No Fault Fault No Fault Fault No Fault Fault No Fault Fault
Detection
0
1
Filtered
DTC
0
DTC NODTCD DTCM-I NODTCD DTCM-I DTCP DTCNP DTCP DTCNP DTCNP DTCP DTCNP DTCNP DTCP DTCP
State
1
B = Bit '6'
DTC- 0
StorageState: 1
A = Bit '5'
0
1
DTC-
Warning- OFF ON OFF ON
Lamp 0
1
Emergency
or Normal Mode Emergency Mode Normal Mode
Normal Mode
0
time
Step Number 0 1 2 3 4 5 6 7 8 9 10 11 12 13
a.) A DTC shall be reported by the server(s) ECU(s) as many times as it has been detected with different
DTCFaultSymptom values. As a consequence the parameter “numberOfDTC” in the positive response
message is the total number of all DTCs + DTCFaultSymptoms which are part of the groupOfDTC
parameter requested.
b.) A DTC shall be reported by the server(s) ECU(s) uniquely. The corresponding system supplier data
shall be stored according to it´s priority or last occurance.
The DTCs stored in the server's (ECU's) memory are specified below:
8.2.5.2.1 - Message flow of readDTCByStatus (request all DTCs) (SAE J2012 format)
Note: DTC#3 is not included in the positive response message because the DTCReadinessFlag is still set to
"testNotComplete"!
STEP#1 readDiagnosticTroubleCodesByStatus(SODTC-RT, GODTC_PG)
time Client (tester) Request Message Hex
P3 readDTCByStatus.ReqSId[ 18
statusOfDTC { requestIdentifiedDTCAndStatus } 00
groupOfDTC { GODTC_PG = Powertrain High Byte } 00
groupOfDTC { GODTC_PG = Powertrain Low Byte }] 00
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDTCByStatus.PosRspSId[ 58 negativeResponse Service Identifier 7F
numberOfDTC 02 readDTCByStatus.ReqSId[ 18
DTC#1 { High Byte } {O2 Sensor Circuit Malf.} 01 responseCode { refer to section 4.4 }] xx
DTC#1 { Low Byte } {Bank 1, Sensor 1} 30
statusOfDTC#1 24
DTC#2 { High Byte } {Throttle Position Malf.} 01
DTC#2 { Low Byte } {Throttle Position Malf.} 20
statusOfDTC#2 E2
return(main) return(responseCode)
Page: 91 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
8.2.5.2.2 Message flow of readDTCByStatus (request all supported DTCs) (vehicle manufacturer
specific 2 Byte Hex DTC format)
The following 19 DTCs stored in the server's (ECU's) memory are specified below:
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDTCByStatus.PosRspSId[ 58 negativeResponse Service Identifier 7F
numberOfDTC 13 readDTCByStatus.ReqSId[ 18
DTC#1 { High Byte } 00 responseCode { refer to section 4.4 }] xx
DTC#1 { Low Byte } 01
statusOfDTC#1 xx
DTC#2 { High Byte } 00
DTC#2 { Low Byte } 02
statusOfDTC#2 xx
DTC#3 { High Byte } 00
DTC#3 { Low Byte } 03
statusOfDTC#3 xx
DTC#4 { High Byte } 00
DTC#4 { Low Byte } 04
statusOfDTC#4] xx
: :
: :
DTC#19 { High Byte } 00
DTC#19 { Low Byte } 13
statusOfDTC#19] xx
return(main) return(responseCode)
8.2.5.2.3 - Message flow of readDTCByStatus with server (ECU) transmit data segmentation
This message flow specifies two (2) different methods of implementations in the server (ECU) in case the number of
DTCs to report to the client (tester) is greater than the transmit buffer in the server (ECU). In such case the server (ECU)
shall use one of the following described methods:
Method #1: Data Segmentation
The client (tester) recognizes that the numberOfDTC parameter includes a greater value than the actual amount of data
bytes (DTCs) included in the positive response message. The client (tester) receives multiple positive response messages
with the same service identifier value and if a three (3) byte header is used it shall also look for the target address. The
client (tester) shall concatenuate all positive response messages received which meet above described critera as one
positive response message.
In this example the server (ECU) has a limited transmit buffer of fifteen (15) data bytes only. The server (ECU) supports
sixteen (16) DTCs which add up to a total of (16 * 3 + 2 = 50 data bytes if one response message) based on the request
message.
STEP#1 readDiagnosticTroubleCodesByStatus(SODTC-RT, GODTC_PG) (SAE J2012 fomat or vehicle
manufacturer specific 2 Byte Hex DTC format)
time Client (tester) Request Message Hex
P3 readDTCByStatus.ReqSId[ 18
statusOfDTC { requestSupportedDTCAndStatus } 01,0
groupOfDTC { GODTC_PG = Powertrain High Byte } 3
groupOfDTC { GODTC_PG = Powertrain Low Byte }] 00
00
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDTCByStatus.PosRspSId[ 58 negativeResponse Service Identifier 7F
numberOfDTC 10 readDTCByStatus.ReqSId[ 18
DTC#1 { High Byte } xx responseCode { refer to section 4.4 }] xx
DTC#1 { Low Byte } xx
statusOfDTC#1 xx
: :
DTC#5 { High Byte }] xx
goto(STEP#2) return(responseCode)
STEP#2 readDiagnosticTroubleCodesByStatusPositiveresponse(...)
time Server (ECU) Positive Response Message Hex Negative Response Message Not Possible!
P2 readDTCByStatus.PosRspSId[ 58
DTC#5 { Low Byte } xx
statusOfDTC#5 xx
: :
DTC#9 { High Byte } xx
DTC#9 { Low Byte } xx
statusOfDTC#9] xx
goto(STEP#3)
STEP#3 readDiagnosticTroubleCodesByStatusPositiveresponse(...)
time Server (ECU) Positive Response Message Hex Negative Response Message Not Possible!
P2 readDTCByStatus.PosRspSId[ 58
DTC#10 { High Byte } xx
DTC#10 { Low Byte } xx
statusOfDTC#10 xx
: :
DTC#14 { High Byte } xx
DTC#14 { Low Byte }] xx
goto(STEP#4)
Page: 93 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
STEP#4 readDiagnosticTroubleCodesByStatusPositiveresponse(...)
time Server (ECU) Positive Response Message Hex Negative Response Message Not Possible!
P2 readDTCByStatus.PosRspSId[ 58
statusOfDTC#14 xx
DTC#15 { High Byte } xx
DTC#15 { Low Byte } xx
statusOfDTC#15 xx
DTC#16 { High Byte } xx
DTC#16 { Low Byte } xx
statusOfDTC#16] xx
return(main)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDTCByStatus.PosRspSId[ 58 negativeResponse Service Identifier 7F
numberOfDTC 10 readDTCByStatus.ReqSId[ 18
DTC#1 { High Byte } xx responseCode { refer to section 4.4 }] xx
DTC#1 { Low Byte } xx
statusOfDTC#1 xx
: :
DTC#16 { High Byte } xx
DTC#16 { Low Byte } xx
statusOfDTC#16] xx
return(main) return(responseCode)
• groupOfDTC = requestByDTC: The parameter groupOfDTC shall also be used to identify a single diagnostic
trouble code (DTC). The DTC may be of the group powertrain, chassis or body. The indication, whether the
parameter groupOfDTC includes a DTC group or a unique DTC number is specified by the content of this
parameter. A value different than "$0000", "$4000", "$8000" or "$C000" indicates a DTC number (refer to table
below: "DTC range“ column).
8.3.1.2 Vehicle Manufacturer defined function groups according to 2 Byte Hex DTC format
Hex requestByFunction requestByDTC Description Cvt Mnemonic
to be not applicable K Powertrain DTCs M VMS_PDT
C_...
determined not applicable K Chassis DTCs M VMS_CDT
C_...
by Vehicle not applicable K Body DTCs M VMS_BDT
C_...
Manufacturer not applicable K Network Communication DTCs M VMS_NCD
TC_...
Table 8.3.1.2.1 - Definition of Vehicle Manufacturer defined groupOfDTC
Page: 95 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
The server (ECU) has stored the DTC with the following statusOfDTC systemSupplierSpecific data:
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readStatusOfDTC.PosRspSId[ 57 negativeResponse Service Identifier 7F
numberOfDTC 01 readStatusOfDTC.ReqSId[ 17
DTC#1 { High Byte } {Throttle Position Malf.} 01 responseCode { refer to section 4.4 }] xx
DTC#1 { Low Byte } {Throttle Position Malf.} 20
statusOfDTC E2
systemSupplierData#1 {Engine Speed=2450 26
r/min} 48
systemSupplierData#1 {Engine Speed=2450 46
r/min} 07
systemSupplierData#2 {Vehicle Speed=75
km/h}
systemSupplierData#3 {Event Counter=7}]
goto STEP#2 return(responseCode)
The server (ECU) has stored the DTC with the following statusOfDTC systemSupplierSpecific data:
Page: 97 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readStatusOfDTC.PosRspSId[ 57 negativeResponse Service Identifier 7F
numberOfDTC 01 readStatusOfDTC.ReqSId[ 17
DTC#1 { High Byte } {Throttle Position Malf.} 0A responseCode { refer to section 4.4 }] xx
DTC#1 { Low Byte } {Throttle Position Malf.} CD
statusOfDTC E2
systemSupplierData#1 {Engine Speed=2450 26
r/min} 48
systemSupplierData#1 {Engine Speed=2450 46
r/min} 07
systemSupplierData#2 {Vehicle Speed=75
km/h}
systemSupplierData#3 {Event Counter=7}]
goto STEP#2 return(responseCode)
• The parameter recordAccessMethodIdentifier (RAMI_) is used by the client to define the access
method which shall be used in the recordIdentification parameter to access a specific freeze frame data
record within the freezeFrameData.
Page: 99 of 160
OCTOBER 1, 1997 KEYWORD PROTOCOL 2000 PART 3: IMPLEMENTATION RECOMMENDED PRACTICE
• The parameter recordIdentification (RI_) is used by the client to identify the record within the freeze
frame referenced by the parameter freezeFrameNumber.
Hex Description Cvt Mnemonic
01 - FE localIdentifier U LI_...
This range of values identifies a record which includes the data within a freeze
frame referenced by a localIdentifier.
Note: $00 and $FF are reservedByDocument;
0001 - EFFF commonIdentifier U CI_...
This range of values identifies a record which includes the data within a freeze
frame referenced by a commonIdentifier.
Note: $0000 and $FFFF are reservedByDocument; $F000-$FFFE are reserved for
system supplier use only!
0001 - 3999 DTC (Diagnostic Trouble Code) U DTC_...
4001 - 7999 SAE J2012 DTC Definitions Recommended Practice
8001 - B999 This range of values identifies a record which includes the data within a freeze
C001 - F999 frame referenced by a SAE J2012 DTC. Refer to table 8.2.1.1.1.2 - "Definition
of groupOfDTC and range of DTC numbers".
DTC (Diagnostic Trouble Code) U VMSDTC_
to be Vehicle Manufacturer defined 2 Byte Hex DTC
determined This range of values identifies a record which includes the data within a freeze
by Vehicle frame referenced by a Vehicle Manufacturer specific 2 Byte Hex DTC. Refer to
Manufacturer table 8.2.1.1.2.1 - "Definition of Vehicle Manufacturer defined groupOfDTC and
range of 2 Byte Hex DTC numbers".
Table 8.4.1.3 - Definition of recordIdentification values
• The parameter freezeFrameData is used by the readFreezeFrameData positive response message and
consists of the data identified by the parameters freezeFrameNumber and, if present, recordIdentification.
8.4.2 - Message data bytes
Data Byte Parameter Name Cvt Hex Value Mnemonic
#1 readFreezeFrameData Request Service Id M 12 RFFD
#2 freezeFrameNumber {default = $00} M xx FFNR_...
#3 recordAccessMethodIdentifier=[ refer to table 8.4.1.2 ] M xx RAMI_...
#4 recordIdentification { High byte } [ refer to table 8.4.1.3 ] C2/C5 xx RI_...
#5 recordIdentification { Low byte } [ refer to table 8.4.1.3 ] C5 xx
Table 8.4.2.1 - ReadFreezeFrameData Request Message
Example: Data content and data format of the freezeFrameData shall be specified by the vehicle
manufacturer. Typical uses for this mode are to report data stored upon detection of a system malfunction.
Multiple frames of data may be stored before and/or after the malfunction has been detected.
8.4.4 - Message flow example
See message flow example of Physical Addressed Service in section 5.3.1.1 and Functional Addressed
Service in section 5.3.2.1.
8.4.5 - Implementation example of readFreezeFrameData
Note: The parameters listed are specified as freeze frame data in the SAE J1979 E/E Diagnostic Test Modes. The
single byte Parameter Identifier is treated as a "localIdentifier" as specified in section 8.4.1.
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readFreezeFrameData.PosRspSId[ 52 negativeResponse Service Identifier 7F
freezeFrameNumber 00 readFreezeFrameData.ReqSId[ 12
RAMI=DTCThatCausedFreezeFrameStorage 80 responseCode { refer to section 4.4 }] xx
recordIdentification=P0130 { High Byte } 01
recordIdentification=P0130 { Low Byte }] 30
return(main) return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readFreezeFrameData.PosRspSId[ 52 negativeResponse Service Identifier 7F
freezeFrameNumber 00 readFreezeFrameData.ReqSId[ 12
freezeFrameData#1 {PID#1 High Byte} : responseCode { refer to section 4.4 }] xx
freezeFrameData#2 {PID#1 Low Byte} :
freezeFrameData#1 {PID#1 data#1} :
: :
freezeFrameData#1 {PID#1 data#k} :
: :
: :
freezeFrameData#n {PID#m High Byte} :
freezeFrameData#n+1 {PID#m Low Byte} :
freezeFrameData#n+2 {PID#m data#1} :
: :
freezeFrameData#n+k {PID#m data#k} :
RAMI=requestByDTC 04
recordIdentification=P0130 { High Byte } 01
recordIdentification=P0130 { Low Byte }] 30
return(main) return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readFreezeFrameData.PosRspSId[ 52 negativeResponse Service Identifier 7F
freezeFrameNumber 00 readFreezeFrameData.ReqSId[ 12
FFD#1 {value of LongTermFuelTrim-Bank1} 8F responseCode { refer to section 4.4 }] xx
recordAccessMethodId=requestByLocalId 01
recordIdentification=LongTermFuelTrim-Bank1] 07
return(main) return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readFreezeFrameData.PosRspSId[ 52 negativeResponse Service Identifier 7F
freezeFrameNumber 00 readFreezeFrameData.ReqSId[ 12
freezeFrameData#1 {PID#1 High Byte} : responseCode { refer to section 4.4 }] xx
freezeFrameData#2 {PID#1 Low Byte} :
freezeFrameData#1 {PID#1 data#1} :
: :
freezeFrameData#1 {PID#1 data#k} :
: :
: :
freezeFrameData#n {PID#m High Byte} :
freezeFrameData#n+1 {PID#m Low Byte} :
freezeFrameData#n+2 {PID#m data#1} :
: :
freezeFrameData#n+k {PID#m data#k} :
RAMI=requestAllData 00
recordIdentification=P0130 { High Byte } 01
recordIdentification=P0130 { Low Byte }] 30
goto STEP#2 return(responseCode)
:
STEP#n readFreezeFrameData positive response#n
time Server (ECU) Positive Response Message Hex Negative Response Message Not Possible!
P2 readFreezeFrameData.PosRspSId[ 52
failureFrameNumber #n
failureDataRecord#1 {PID#1 High Byte} :
failureDataRecord#2 {PID#1 Low Byte} :
failureDataRecord#1 {PID#1 data#1} :
: :
failureDataRecord#1 {PID#1 data#k} :
: :
: :
failureDataRecord#n {PID#m High Byte} :
failureDataRecord#n+1 {PID#m Low Byte} :
failureDataRecord#n+2 {PID#m data#1} :
: :
failureDataRecord#n+k {PID#m data#k} :
RAMI=requestAllData 00
recordIdentification=P1xxx { High Byte } 1x
recordIdentification=P1xxx { Low Byte }] xx
return(main)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readFreezeFrameData.PosRspSId[ 52 negativeResponse Service Identifier 7F
freezeFrameNumber FF readFreezeFrameData.ReqSId[ 12
RAMI=requestAllData 00 responseCode { refer to section 4.4 }] xx
recordIdentification=no DTC stored { High Byte } 00
recordIdentification=no DTC stored { Low Byte }] 00
return(main) return(responseCode)
STEP#1 clearDiagnosticInformation(GODI_PG)
time Client (tester) Request Message Hex
P3 clearDiagnosticInformation.ReqSId[ 14
groupOfDiagnosticInformation = Powertrain { High Byte } 00
groupOfDiagnosticInformation = Powertrain { Low Byte }] 00
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 clearDiagnosticInformation.PosRspSId[ 54 negativeResponse Service Identifier 7F
groupOfDiagnosticInfo = Powertrain { High Byte 00 clearDiagnosticInformation.ReqSId[ 14
} 00 responseCode { refer to section 4.4 }] xx
groupOfDiagnosticInfo = Powertrain { Low Byte
}]
return(main) return(responseCode)
STEP#1 clearDiagnosticInformation(GODI_DTC_P0120)
time Client (tester) Request Message Hex
P3 clearDiagnosticInformation.ReqSId[ 14
groupOfDiagnosticInformation = DTC_P0120 { High Byte } 01
groupOfDiagnosticInformation = DTC_P0120 { Low Byte }] 20
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 clearDiagnosticInformation.PosRspSId[ 54 negativeResponse Service Identifier 7F
groupOfDiagnosticInfo=DTC_P0120 { High 01 clearDiagnosticInformation.ReqSId[ 14
Byte } 20 responseCode { refer to section 4.4 }] xx
groupOfDiagnosticInfo=DTC_P0120 { Low Byte
}]
return(main) return(responseCode)
Note: The usage of the inputOutputControlParameters specified in the following table depends on the
inputOutputLocalIdentifier which shall be manipulated.
Hex Description Cvt Mnemonic
00 returnControlToECU U RCTECU
This value shall indicate to the server (ECU) that the client (tester) does no longer have control
about the input signal, internal parameter or output signal referenced by the
inputOutputLocalIdentifier.
01 reportCurrentState U RCS
This value shall indicate to the server (ECU) that it is requested to report the current state of the
input signal, internal parameter or output signal referenced by the inputOutputLocalIdentifier.
02 reportIOConditions U RIOC
This value shall indicate to the server (ECU) that it is requested to report the conditions of the
input signal, internal parameter or output signal referenced by the inputOutputLocalIdentifier.
The server (ECU) specific condition(s) are the responsibility of the vehicle manufacturer/system
supplier.
03 reportIOScaling U RIOS
This value shall indicate to the server (ECU) that it is requested to report the scaling of the input
signal, internal parameter or output signal referenced by the inputOutputLocalIdentifier. The
server (ECU) specific scaling is the responsibility of the vehicle manufacturer/system supplier.
04 resetToDefault U RTD
This value shall indicate to the server (ECU) that it is requested to reset the input signal, internal
parameter or output signal referenced by the inputOutputLocalIdentifier to its default state.
05 freezeCurrentState U FCS
This value shall indicate to the server (ECU) that it is requested to freeze the current state of the
input signal, internal parameter or output signal referenced by the inputOutputLocalIdentifier.
Table 9.1.1.2 - Definition of inputOutputControlParameter values
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = resetToDefault 04 responseCode { refer to section 4.4 }] xx
750 r/min { default idle adjustment }] 4B
return(main) return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = reportCurrentState 01 responseCode { refer to section 4.4 }] xx
800 r/min] 50
goto STEP#2 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = freezeCurrentState 05 responseCode { refer to section 4.4 }] xx
800 r/min] 50
goto STEP#3 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = shortTermAdjustment 07 responseCode { refer to section 4.4 }] xx
820 r/min { current Engine Speed }] 52
goto STEP#4 return(responseCode)
Note: The client (tester) has sent an inputOutputControlByLocalIdentifier request message as specified in STEP#3.
The server (ECU) has sent an immediate positive response message which includes the controlState parameter
"Engine Speed" with the value of "820 r/min". The engine requires a certain amount of time to adjust the idle
speed to the requested value of "1000 r/min".
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 readDataByLocalId.PosRsp[ 61 negativeResponse Service Identifier 7F
recordLocalIdentifier 01 readDataByLocalId.ReqSId[ 21
recordValue#1 xx responseCode { refer to section 4.4 }] xx
: :
recordValue#n] xx
goto STEP#5 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = returnControlToECU] 00 responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Speed Offset" 33 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = reportIOCalibrationPara 09 responseCode { refer to section 4.4 }] xx
minimumOffsetValue { 0 [r/min] } 00
maximumOffsetValue { 150 [r/min] } 96
offsetParameterResolution { 50 [r/min] } 32
defaultOffsetValue { 0 [r/min] } 00
actualOffsetValue] { 50 [r/min] } 32
goto STEP#2 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Speed Offset" 33 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = longTermAdjustment 08 responseCode { refer to section 4.4 }] xx
150 r/min] 96
goto STEP#3 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = reportCurrentState 01 responseCode { refer to section 4.4 }] xx
850 r/min] 55
return(main) return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 inputOutputControlByLocalId.PosRsp[ 70 negativeResponse Service Identifier 7F
inputOutputLocalId = "Desired Idle Adjustment" 32 inputOutputControlByLocalId.ReqSId[ 30
inputOutputControlParameter = reportIOConditions 02 responseCode { refer to section 4.4 }] xx
inputOutputConditionIdentifier#1 02
inputOutputConditionIdentifier#2 03
inputOutputConditionIdentifier#3 04
inputOutputConditionIdentifier#4] 05
return(main) return(responseCode)
The inputOutputCommonIdentifier table consists of four (4) columns and multiple lines.
• The 1st column (Hex) includes the "Hex Value" assigned to the inputOutputCommonIdentifier specified in the 2nd
column.
• The 2nd column (Description) specifies the inputOutputCommonIdentifier.
• The 3rd column (Cvt) is the convention column which specifies whether the inputOutputCommonIdentifier is "M"
(mandatory) or "U" (User Optional).
• The 4th column (Mnemonic) specifies the mnemonic of this inputOutputCommonIdentifier.
M = mandatory, U = user optional
Hex Description Cvt Mnemonic
0000 reservedByDocument M RBD
This value shall be reserved by this document for future definition.
0001 - EFFF inputOutputCommonIdentifier U IOCI_
This range of values shall be reserved to reference parameters implemented in the server
(ECU) upon the vehicle manufacturer's request.
F000 - FFFE systemSupplierSpecific U SSS
This range of values is reserved for system supplier specific use.
FFFF reservedByDocument M RBD
This value shall be reserved by this document for future definition.
Table 9.2.1.1 - Definition of inputOutputCommonIdentifier values
Note: The usage of the inputOutputControlParameters specified in the following table depends on the
inputOutputCommonIdentifier which shall be manipulated.
Hex Description Cvt Mnemonic
00 returnControlToECU U RCTECU
This value shall indicate to the server (ECU) that the client (tester) does no longer have control
about the input signal, internal parameter or output signal referenced by the
inputOutputCommonIdentifier.
01 reportCurrentState U RCS
This value shall indicate to the server (ECU) that it is requested to report the current state of the
input signal, internal parameter or output signal referenced by the inputOutputCommonIdentifier.
02 reportIOConditions U RIOC
This value shall indicate to the server (ECU) that it is requested to report the conditions of the
input signal, internal parameter or output signal referenced by the inputOutputCommonIdentifier.
The server (ECU) specific condition(s) are the responsibility of the vehicle manufacturer/system
supplier.
03 ReportIOScaling U RIOS
This value shall indicate to the server (ECU) that it is requested to report the scaling of the input
signal, internal parameter or output signal referenced by the inputOutputCommonIdentifier. The
server (ECU) specific scaling is the responsibility of the vehicle manufacturer/system supplier.
04 ResetToDefault U RTD
This value shall indicate to the server (ECU) that it is requested to reset the input signal, internal
parameter or output signal referenced by the inputOutputCommonIdentifier to its default state.
05 freezeCurrentState U FCS
This value shall indicate to the server (ECU) that it is requested to freeze the current state of the
input signal, internal parameter or output signal referenced by the inputOutputCommonIdentifier.
06 executeControlOption U ECO
This value shall indicate to the server (ECU) that it is requested to execute the controlOption
parameter(s). The controlOption shall be of single or multiple parameters (bytes) if requested.
07 shortTermAdjustment U STA
This value shall indicate to the server (ECU) that it is requested to adjust the input signal,
internal parameter or output signal referenced by the inputOutputCommonIdentifier in RAM to
the value(s) included in the controlOption parameter(s). (e.g. set Idle Air Control Valve to a
specific step number, set pulse width of valve to a specific value/duty cycle).
08 longTermAdjustment U LTA
This value shall indicate to the server (ECU) that it is requested to adjust the input signal,
internal parameter or output signal referenced by the inputOutputCommonIdentifier in
EEPROM/FLASH EEPROM to the value(s) included in the controlOption parameter(s). (e.g. set
Engine Idle Speed, set CO Adjustment parameter to a specific value).
09 reportIOCalibrationParameters U RIOCP
This value shall indicate to the server (ECU) that it is requested to report the
inputOutputCalibrationParameters of the input signal, internal parameter or output signal
referenced by the inputOutputCommonIdentifier.
0A - F9 vehicleManufacturerSpecific U VMS
This range of values is reserved for vehicle manufacturer specific use.
FA – FE systemSupplierSpecific U SSS
This range of values is reserved for system supplier specific use.
FF reservedByDocument M RBD
This value is reserved by this document for future definition.
Table 9.2.1.2 - Definition of inputOutputControlParameter values
This functional unit specifies the services of remote activation of routines as they shall be implemented in servers
(ECUs) and client (tester). "The following figure - Various methods of Remote Activation Of Routines" shows two
(2) different methods of implementation (Methods: "A" and "B"). There may be other methods of implementation
possible. Methods "A" and "B" shall be used as a guideline for implementation of routine services.
Note: Each method may feature the service "requestRoutineResultsByLocalIdentifier/Address" after the routine has
been stopped. The selection of method and the implementation is the responsibility of the vehicle manufacturer
and system supplier.
The following is a brief description of method "A" and "B" shown in figure 6 and 7:
• Method "A": This method is based on the assumption that after a routine has been started by the client (tester) in
the server's (ECU's) memory the client (tester) shall be responsible to stop the routine.
The ECU routine shall be started in the server's (ECU's) memory some time between the completion of the
startRoutineByLocalIdentifier/Address request message and the completion of the first response message (if
"positive" based on the server's conditions).
The ECU routine shall be stopped in the server's (ECU's) memory some time after the completion of the
stopRoutineByLocalIdentifier/Address request message and the completion of the first response message (if
"positive" based on the server's conditions).
The client (tester) may request routine results after the routine has been stopped.
• Method "B": This method is based on the assumption that after a routine has been started by the client (tester) in
the server's (ECU's) memory that the server (ECU) shall be responsible to stop the routine.
The ECU routine shall be started in the server's (ECU's) memory some time between the completion of the
startRoutineByLocalIdentifier/Address request message and the completion of the first response message (if
"positive" based on the server's conditions).
The ECU routine shall be stopped any time as programmed or previously initialised in the server's (ECU's) memory.
0 P3min P3max 0 P2min P2max/P3max 0 P3min P3max 0 P2min P2max/P3max 0 P3min P3max 0 P2min P2max/P3max 0 P3min
1
t t t t t t t
SPRBLIPR
POSITIVE
(SID $72)
RESPONSE
NR, RC = (x)
NR, RC = (x)
(SID $7F)
(SID $7F)
(x) = $21; $23
(x) = $21; $23
NR, RC != (x)
NR, RC != (x) (SID $7F)
(SID $7F)
(x) = $21; $23; $78
(x) = $21; $23; $78
NR, RC != (x)
(SID $7F)
(x) = $21; $23; $78
RRRBLIPR
(SID $73)
NR, RC != $78
(SID $7F) Note: "!=" shall be interpreted as "NOT EQUAL"
t t t t t
1
(x) = $21
NR, RC != (x)
(SID $7F)
POSITIVE
NR, RC = (x) RESPONSE
(SID $7F)
(x) = $23
STRBLIPR
(SID $71)
NR, RC != (x)
(SID $7F)
(x) = $21; $23; $78
RRRBLIPR
(SID $73)
NR, RC != $78
(SID $7F)
Note: "!=" shall be interpreted as "NOT EQUAL"
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 startRoutineByLocalId.PosRsp[ 71 negativeResponse Service Identifier 7F
routineLocalId = inputOutputSignalIntermittent- 01 startRoutineByLocalId.ReqSId[ 31
TestRoutine] responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
STEP#1 startRoutineByAddress(RA_...)
time Client (tester) Request Message Hex
P3 startRoutineByAddress.Request[ 38
routineAddress { High Byte } 60
routineAddress { Middle Byte } 47
routineAddress { Low Byte }] 20
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 startRoutineByAddress.PosRsp[ 78 negativeResponse Service Identifier 7F
routineAddress{High Byte} 60 startRoutineByAddress.ReqSId[ 38
routineAddress { Middle Byte } 47 responseCode { refer to section 4.4 }] xx
routineAddress { Low Byte }] 20
return(main) return(responseCode)
STEP#1 stopRoutineByLocalIdentifier(RELI_IOSITR)
time Client (tester) Request Message Hex
P3 stopRoutineByLocalId.Request[ 32
routineLocalId = inputOutputSignalIntermittentTestRoutine] 01
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 stopRoutineByLocalId.PosRsp[ 72 negativeResponse Service Identifier 7F
routineLocalId = inputOutputSignalIntermittent- 01 stopRoutineByLocalId.ReqSId[ 32
TestRoutine] responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
STEP#1 stopRoutineByAddress(RA_...)
time Client (tester) Request Message Hex
P3 stopRoutineByAddress.Request[ 39
routineAddress { High Byte } 60
routineAddress { Middle Byte } 47
routineAddress { Low Byte }] 20
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 stopRoutineByAddress.PosRsp[ 79 negativeResponse Service Identifier 7F
routineAddress {High Byte} 60 stopRoutineByAddress.ReqSId[ 39
routineAddress { Middle Byte } 47 responseCode { refer to section 4.4 }] xx
routineAddress { Low Byte }] 20
return(main) return(responseCode)
P3 startRoutineByLocalId.Request[...]
P2 startRoutineByLocalId.PositiveResponse[...]
P3 stopRoutineByLocalId.Request[...]
P2 stopRoutineByLocalId.PositiveResponse[...]
P3 requestRoutineResultsByLocalId.Request[...]
P2 requestRoutineResultsByLocalId.PositiveResponse[...]
Table 10.5.4 - Message flow example of start/stopRoutineByLocalIdentifier service followed by a
requestRoutineResultsByLocalIdentifier service
STEP#1 requestRoutineResultsByLocalIdentifier(RELI_IOSITR)
time Client (tester) Request Message Hex
P3 requestRoutineResultsByLocalId.Request[ 33
routineLocalId = inputOutputSignalIntermittentTestRoutine] 01
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 requestRoutineResultsByLocalId.PosRsp[ 73 negativeResponse Service Identifier 7F
routineLocalId = inputOutputSignalIntermittent- 01 requestRoutineResultsByLocalId.ReqSId[ 33
TestRoutine responseCode { refer to section 4.4 }] xx
routineResult#1 = inputSignal#1 57
routineResult#2 = inputSignal#2 33
: :
routineResult#m = inputSignal#m] 8F
return(main) return(responseCode)
Note: Above mentioned message flow example uses a localIdentifier instead of a memoryAddress.
10.6.5 - Implementation example of "Input/output signal intermittent test routine"
STEP#1 requestRoutineResultsByAddress(RA_...)
time Client (tester) Request Message Hex
P3 requestRoutineResultsByAddress.Request[ 3A
routineAddress { High Byte } 20
routineAddress { Middle Byte } 47
routineAddress { Low Byte }] 20
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 requestRoutineResultsByAddress.PosRsp[ 7A negativeResponse Service Identifier 7F
routineAddress { High Byte } 20 requestRoutineResultsByAddress.ReqSId[ 3A
routineAddress { Middle Byte } 47 responseCode { refer to section 4.4 }] xx
routineAddress { Low Byte } 20
routineResult#1 = inputSignal#1 57
routineResult#2 = inputSignal#2 33
: :
routineResult#m = inputSignal#m] 8F
return(main) return(responseCode)
• The parameter uncompressedMemorySize (UCMS) is a three (3) byte value. This parameter shall be used by the
server (ECU) to compare the uncompressed memory size with the total amount of data transferred during the
requestTransferExit service.
• The transferResponseParameter (TREP_) "maxNumberOfBlockLength (MNROBL)" is used by the
requestUpload positive response message to inform the client (tester) how many data bytes shall be included in each
transferData positive response message from the server (ECU).
Note: The requestTransferExit service shall only be used with physical addressing.
11.4.5 - Implementation example of "requestTransferExit"
In the 2nd step the client (tester) transfers 64 KBytes (number of transferData services with 128 data bytes can not be
calculated because the compression method and its compression ratio is supplier specific) of data to the flash memory
starting at memoryaddress $602000 to the server (ECU).
In the 3rd step the client (tester) terminates the data transfer to the server (ECU) with a requestTransferExit service.
Test conditions: ignition = on, engine = off, vehicle speed = 0 [kph]
11.4.5.1.2 - Message flow
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 requestDownload.PosRsp[ 74 negativeResponse Service Identifier 7F
transferRspPara = maxNumberOfBlockLength] 81 requestDownload.ReqSId[ 34
responseCode { refer to section 4.4 }] xx
goto STEP#2 return(responseCode)
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 transferData.PosRsp#1 76 negativeResponse Service Identifier 7F
transferData.ReqSId[ 36
responseCode { refer to section 4.4 }] xx
goto STEP#2 transferData#m() return(responseCode)
:
STEP#2 transferData#m(TRTP_..., ... , TRTP_...)
time Client (tester) Request Message Hex
P3 transferData.Request#m[ 36
transferData#1 = dataByte#2 xx
: :
transferData#n-1 = dataByte#n] xx
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 transferData.PosRsp#m 76 negativeResponse Service Identifier 7F
transferData.ReqSId[ 36
responseCode { refer to section 4.4 }] xx
goto STEP#3 return(responseCode)
STEP#3 requestTransferExit()
time Client (tester) Request Message Hex
P3 requestTransferExit.Request 37
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 requestTransferExit.PosRsp 77 negativeResponse Service Identifier 7F
requestTransferExit.ReqSId[ 37
responseCode { refer to section 4.4 }] xx
return main() return(responseCode)
In the 2nd step the client (tester) transfers 511 data bytes (3 transferData services with 129 (128 ECU data bytes + 1
serviceId data byte) data bytes and 1 transferData service with 128 (127 ECU data bytes + 1 serviceId data byte) data
bytes from the external RAM starting at memoryaddress $201000 in the server (ECU). In the 3rd step the client (tester)
terminates the data transfer to the server (ECU) with a requestTransferExit service.
Test conditions: ignition = on, engine = off, vehicle speed = 0 [kph]
11.4.5.2.2 - Message flow
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 requestUpload.PosRsp[ 75 negativeResponse Service Identifier 7F
transferRspPara=[maxNumberOfBlockLength] 81 requestUpload.ReqSId[ 35
responseCode { refer to section 4.4 }] xx
return(main) return(responseCode)
STEP#2 transferData#1-3()
time Client (tester) Request Message Hex
P3 transferData.Request#1-3 36
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 transferData.PosRsp#1-3[ 76 negativeResponse Service Identifier 7F
transferData#1 = dataByte#2 xx transferData.ReqSId[ 36
: : responseCode { refer to section 4.4 }] xx
transferData#128 = dataByte#129] xx
goto STEP#2 transferData#4() return(responseCode)
STEP#2 transferData#4()
time Client (tester) Request Message Hex
P3 transferData.Request#4 36
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 transferData.PosRsp#4[ 76 negativeResponse Service Identifier 7F
transferData#1 = dataByte#2 xx transferData.ReqSId[ 36
: : responseCode { refer to section 4.4 }] xx
transferData#127 = dataByte#128] xx
goto STEP#3 return(responseCode)
STEP#3 requestTransferExit()
time Client (tester) Request Message Hex
P3 requestTransferExit.Request 37
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 requestTransferExit.PosRsp 77 negativeResponse Service Identifier 7F
requestTransferExit.ReqSId[ 37
responseCode { refer to section 4.4 }] xx
return main() return(responseCode)
See also message flow examples of Physically Addressed Service in section 5.3.1.1 and Functionally
Addressed Service in section 5.3.2.1.
12.1.5 - Implementation example of "escapeCode(manufacturerSpecificServiceId)"
STEP#1 escapeCode(manufacturerSpecificServiceId)
time Client (tester) Request Message Hex
P3 escapeCode.Request[ 80
manufacturerSpecificServiceId xx
recordValue#1 xx
: :
recordValue#m] xx
time Server (ECU) Positive Response Message Hex Server (ECU) Negative Response Message Hex
P2 escapeCode.PosRsp[ C0 negativeResponse Service Identifier 7F
manufacturerSpecificServiceId xx escapeCode.ReqSId[ 80
recordValue#1 xx manufacturerSpecificServiceId xx
: : responseCode { refer to section 4.4 }] xx
recordValue#m] xx
return(main) return(responseCode)
13 - Application examples
This section aims at showing with a real example how the Keyword Protocol 2000 services defined in this
document can be used to build diagnostic applications for a tester and one or multiple on-vehicle ECUs.
The communication with the TCM is stopped by a physically addressed stopCommunication request message.
Note: It is recommended to set the P2max timing parameter to a value which is greater than the time required to
program a block of data received via the transferData request message because this method does not cause the
server (ECU) to send one or multiple negative response messages with the responseCode
"requestCorrectlyReceived-ResponsePending" as shown in the message flow example to gain additional time
for completion of programming the block of data into the flash memory. When the client (tester) sends a
requestTransferExit request message the server (ECU) recognizes that no more data will be sent by the client
(tester). The client (tester) now is requested to initiate test routines in the server's (ECU's) memory which
calculate code and/or data checksum(s) over the data previously downloaded.
; startCommunication!
49.12 <81> F - H01 - address mode: 10 - With address Info; Physical addressing; with Length
5.09 <11> T - H02 - target address
5.08 <F1> S - H03 - source address
5.09 <81> D - 001- SCR - startCommunication request service identifier
5.08 <04> C - CS - checksum
25.75 <80> F - H01 - address mode: 10 - with address Info, Physical addressing; with Length
0.00 <F1> T - H02 - target address
0.00 <11> S - H03 - source address
0.00 <03> L - H04 - length byte
0.09 <C1> D - 001 - SCRPR - startCommunication positive response service identifier
0.09 <6B> D - 002 - Keybyte 1: 0x6B ->
0.09 <8F> D - 003 - Keybyte 2: 0x8F -> Protocol: Keyword 2027 (Normal Timing=default Timing)
0.00 <40> C - CS - checksum
; startDiagnosticSession(ECUProgrammingMode)!
60.16 <82> F - H01 - address mode: 10 - with address Info, Physical addressing
5.09 <11> T - H02 - target address
5.09 <F1> S - H03 - source address
5.08 <10> D - 001 - STDS - startDiagnosticSession request service identifier
5.09 <85> D - 002 - DCM_ECUPM = 0x85: ECUProgrammingMode
5.08 <19> C - CS - checksum
26.26 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.00 <F1> T - H02 - target address
0.00 <11> S - H03 - source address
0.00 <02> L - H04 - length byte
0.09 <50> D - 001 - STDS - startDiagnosticSession positive response service identifier
0.09 <85> D - 002 - DCM_ECUPM = 0x85: ECUProgrammingMode
0.06 <57> C - CS - checksum
; securityAccess (requestSeed)!
61.36 <82> F - H01 - address mode: 10 - with address Info, Physical addressing
5.09 <11> T - H02 - target address
5.09 <F1> S - H03 - source address
5.08 <27> D - 001 - SA - securityAccess request service identifier
5.09 <01> D - 002 - ACCMODE = 0x01: requestSeed
5.08 <AC> C - CS - checksum
25.57 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.07 <F1> T - H02 - target address
0.09 <11> S - H03 - source address
0.05 <04> L - H04 - length byte
0.09 <67> D - 001 - SAPR - securityAccess positive response service identifier
0.09 <01> D - 002 - ACCMODE = 0x01: requestSeed
0.09 <12> D - 003 - SEED High-Byte: 0x12
0.09 <34> D - 004 - SEED Low-Byte: 0x34 SEED = 0x1234
0.06 <34> C - CS - checksum
; securityAccess (sendKey)!
68.36 <84> F - H01 - address mode: 10 - with address Info, Physical addressing
5.09 <11> T - H02 - target address
5.09 <F1> S - H03 - source address
5.08 <27> D - 001 - SA - securityAccess request service identifier
5.09 <02> D - 002 - ACCMODE = 0x02: sendKey
5.08 <56> D - 003 - KEY High-Byte: 0x56
5.09 <78> D - 004 - KEY Low-Byte: 0x78 Key = 0x5678
5.09 <7D> C - CS - checksum
25.38 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.08 <F1> T - H02 - target address
0.05 <11> S - H03 - source address
0.09 <03> L - H04 - length byte
0.09 <67> D - 001 - SAPR - securityAccess positive response service identifier
0.07 <02> D - 002 - ACCMODE = 0x02: sendKey
0.09 <34> D - 003 - SACCSTAT: 0x34 - Security Access Allowed
0.08 <22> C - CS - checksum
25.87 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.08 <F1> T - H02 - target address
0.06 <11> S - H03 - source address
0.08 <07> L - H04 - length byte
0.09 <C3> D - 001 - ATPPR - accessTimingParameters positive response service identifier
0.09 <00> D - 002 - TPI = 0x00: read limits of possible values
0.09 <14> D - 003 - P2min = 0x14 = 10.00ms (0.5ms Res.)
0.09 <28> D - 004 - P2max = 0x28 = 1000.00ms ( 25ms Res.)
0.09 <0A> D - 005 - P3min = 0x0A = 5.00ms (0.5ms Res.)
0.09 <28> D - 006 - P3max = 0x28 = 10000.00ms (250ms Res.)
0.09 <08> D - 007 - P4min = 0x08 = 4.00ms (0.5ms Res.)
0.09 <C2> C - CS - checksum
25.60 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.07 <F1> T - H02 - target address
0.08 <11> S - H03 - source address
0.09 <02> L - H04 - length byte
0.09 <C3> D - 001 - ATPPR - accessTimingParameters positive response service identifier
0.09 <03> D - 002 - TPI = 0x03: set parameters
0.07 <4A> C - CS - checksum
10.06 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.07 <F1> T - H02 - target address
0.06 <11> S - H03 - source address
0.08 <02> L - H04 - length byte
0.09 <71> D - 001- STRBLIPR - startRoutineByLocalIdentifier positive response service identifier
0.09 <01> D - 002 - routineLocalIdentifier for copy "eraseRoutine" to EXRAM of µC
0.09 <F6> C - CS - checksum
10.03 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.00 <F1> T - H02 - target address
0.09 <11> S - H03 - source address
0.08 <03> L - H04 - length byte
0.09 <7F> D - 001 - NR - negative response service identifier
0.09 <31> D - 002 - STRBLI - startRoutineByLocalIdentifier request service identifier
0.09 <78> D - 003 - *** requestCorrectlyReceived-ResponsePending
0.00 <AD> C - CS - checksum
2407.13 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.08 <F1> T - H02 - target address
0.07 <11> S - H03 - source address
0.09 <02> L - H04 - length byte
0.09 <71> D - 001 - STRBLIPR - startRoutineByLocalIdentifier positive response service identifier
0.09 <02> D - 002 - routineLocalIdentifier to start "eraseRoutine"
0.09 <1E> D - 003 - flash sector number
0.08 <15> C - CS - checksum
; requestDownload!
43.28 <81> F - H01 - address mode: 10 - with address Info, Physical addressing
4.03 <11> T - H02 - target address
4.03 <F1> S - H03 - source address
4.03 <34> D - 001 - RD - requestDownload request service identifier
4.03 <60> D - 002 - memoryAddress
4.03 <20> D - 003 - memoryAddress
4.03 <00> D - 004 - memoryAddress
4.03 <11> D - 005 - dataFormatIdentifier
4.03 <00> D - 006 - uncompressedMemorySize
4.03 <00> D - 007 - uncompressedMemorySize
4.03 <10> D - 008 - uncompressedMemorySize (16 data bytes)
4.13 <58> C - CS - checksum
10.04 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.09 <F1> T - H02 - target address
0.08 <11> S - H03 - source address
0.09 <01> L - H04 - length byte
0.09 <74> D - 001 - RDPR - requestDownload positive response service identifier
0.08 <F7> C - CS - checksum
; transferData!
114.32 <91> F - H01 - address mode: 10 - with address Info, Physical addressing
4.03 <11> T - H02 - target address
4.03 <F1> S - H03 - source address
4.12 <36> D - 001 - TD - transferData request service identifier
4.13 <40> D - 002 - some data to program into flash memory!
4.12 <80> D - 003 -
4.13 <00> D - 004 -
4.13 <00> D - 005 -
4.12 <01> D - 006 -
4.13 <02> D - 007 -
4.12 <03> D - 008 -
4.13 <04> D - 009 -
4.13 <05> D - 010 -
4.12 <06> D - 011 -
10.92 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.09 <F1> T - H02 - target address
0.09 <11> S - H03 - source address
0.09 <04> L - H04 - length byte
0.09 <76> D - 001 - TDPR - transferData positive response service identifier
0.09 <40> D - 002 - some data which are programmed into flash memory are returned!
0.09 <80> D - 003 -
0.09 <00> D - 004 -
0.09 <BC> C - CS - checksum
; requestTransferExit!
44.32 <81> F - H01 - address mode: 10 - with address Info, Physical addressing
4.03 <11> T - H02 - target address
4.03 <F1> S - H03 - source address
4.13 <37> D - 001 - RTE - requestTransferExit request service identifier
4.12 <BA> C - CS - checksum
10.06 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.09 <F1> T - H02 - target address
0.09 <11> S - H03 - source address
0.09 <01> L - H04 - length byte
0.09 <77> D - 001 - RTEPR - requestTransferExit positive response service identifier
0.09 <FA> C - CS - checksum
10.06 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.09 <F1> T - H02 - target address
0.09 <11> S - H03 - source address
0.09 <02> L - H04 - length byte
0.09 <71> D - 001 - STRBLIPR - startRoutineByLocalIdentifier positive response service identifier
0.09 <06> D - 002 - routineLocalIdentifier to start "dataChecksumRoutine"
0.09 <FB> C - CS - checksum
10.06 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.07 <F1> T - H02 - target address
0.08 <11> S - H03 - source address
0.08 <02> L - H04 - length byte
0.09 <71> D - 001 - STRBLIPR - startRoutineByLocalIdentifier positive response service identifier
0.09 <07> D - 002 - routineLocalIdentifier to start "codeChecksumRoutine"
0.08 <FC> C - CS - checksum
10.08 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.09 <F1> T - H02 - target address
0.09 <11> S - H03 - source address
0.09 <02> L - H04 - length byte
0.09 <7B> D - 001 - WDBLI - writeDataByLocalIdentifier positive response service identifier
..0.09 <90> D - 002 - recordLocalIdentifier = VIN
0.09 <8F> C - CS - checksum
; stopDiagnosticSession!
20.55 <81> F - H01 - address mode: 10 - with address Info, Physical addressing
4.02 <11> T - H02 - target address
4.03 <F1> S - H03 - source address
4.13 <20> D - 001 - SPDS - stopDiagnosticSession request service identifier
4.12 <A3> C - CS - checksum
10.08 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.08 <F1> T - H02 - target address
0.08 <11> S - H03 - source address
0.08 <01> L - H04 - length byte
0.09 <60> D - 001 - SPRPR - stopDiagnosticSession positive response service identifier
0.09 <E3> C - CS - checksum
; stopCommunication!
60.85 <81> F - H01 - address mode: 10 - with address Info, Physical addressing
4.03 <11> T - H02 - target address
4.03 <F1> S - H03 - source address
4.13 <82> D - 001 - SPR - stopCommunication request service identifier
4.12 <05> C - CS - checksum
10.07 <80> F - H01 - address mode: 10 - with address Info, Physical addressing
0.00 <F1> T - H02 - target address
0.00 <11> S - H03 - source address
0.00 <01> L - H04 - length byte
0.09 <C2> D - 001 - SPRPR - stopCommunication positive response service identifier
0.09 <45> C - CS - checksum
17JUL97 6.1.5.2.3. Corrected positive response message in example for service startDiagnosticSession. The Preuschoff,
baudrateIdentifier must be 0x06 (specificBaudrate) instead of 0x05. MB AG
12SEP97 history log Column for document version number added Walter, GM
STG IO