Professional Documents
Culture Documents
UDS Document
UDS Document
36 - 00 - 013 / - - C
DIAGNOSTIC ON CAN
This document is to be considered as a whole, the parts of which shall not be separated.
© RENAULT 2010.
No duplication permitted without the consent of the issuing department.
No circulation permitted without the consent of RENAULT.
DATE OF ISSUE
REVISIONS
REFERENCED DOCUMENTS
CONTENTS
Page
1. FOREWORD 5
2. INTRODUCTION 5
4. CONVENTIONS 6
DESCRIPTION 111
1. FOREWORD
It complies with the agreement between RENAULT and NISSAN in June 2004.
2. INTRODUCTION
- ISO/DIS 14229-1 : Road vehicles — Unified diagnostic services (UDS) — Part 1: Specification
and requirements,
- ISO/DIS 15765-3: Road vehicles — Diagnostics on controller area network (CAN) — Part 3:
Implementation of unified diagnostic services (UDS on CAN),
- ISO/DIS 15031-6: Road vehicles — Communication between vehicle and external test equipment
for emissions-related diagnostics — Part 6: Diagnostic trouble code definitions,
The document defines the diagnostic services on vehicle Electronic Control Units (ECU) to be
implemented for diagnostic testing using after-sales, assembly line and supplier and manufacturer
design/development tools.
Several choices have been made with respect to the above mentioned ISO standards; they
correspond to the requirements for RENAULT and NISSAN.
This document is a generic specification, it shall be the basis for writing ECU specific diagnostic
specifications.
For the detailed specification of services used during reprogramming refer to [REF 2] document
related to this application.
RENAULT 65676 and Nissan KR6 are responsible for the diagnostic services.
ECU
Diagnostic tool
System that controls functions such as test, inspection, monitoring, or diagnosis of an on-vehicle ECU,
referred to as Client in ISO documents.
Diagnostic service
Information exchange initiated by a diagnostic tool in order to require diagnostic information from an
ECU or/and to modify its behavior for diagnostic purpose.
Diagnostic information
Data located in the memory of an ECU and which may be monitored and/or possibly modified by the
diagnostic tool. Two types of values are defined for Diagnostic Data :
- current value: value currently used by or resulting from the normal operation of ECU,
- stored value: internal copy of a current value made at specific moments (e.g. when a malfunction
occurs or periodically); this copy is under the control of the ECU.
Diagnostic Session
NOTE : Defining a specific repair shop or development testing session selects different ECU
functionality (e.g. access to all memory locations may only be allowed in the development
testing session).
Diagnostic Routine
Routine that is embedded in an ECU and that may be started by an ECU upon a request from the
diagnostic tool.
NOTE : It could either run instead of a normal operating program, or could be enabled in this mode
and executed with the normal operating program. In the first case, normal operation for the
ECU is not possible. In the second case, multiple diagnostic routines may be enabled that
run while all other parts of the ECU are functioning normally.
Functional Unit
4. CONVENTIONS
Physical Medium
Restriction:
ECUs must not implement any functional address other than 0x33 (OBD functional address,
corresponding to 11 bits CANId 0x7DF).
Restriction:
For RENAULT and NISSAN use, the bit suppressPosRspMsgIndicationBit is always set to 0 when
defined for the service.
Whatever the value of this bit, a response (positive or negative) is always sent.
Restrictions:
For RENAULT and NISSAN physical communication, P2CAN_SERVER max value is set to 900 ms in all
sessions (to allow ECU to send positive response without using NRC $78). P2*CAN_SERVER is not
applicable because NRC $78 is forbidden for RENAULT and NISSAN (see § 9.1.1. Negative
responses : Definitions and code table).
2/ Table 7— Tool error handling defined in § 6.3.6. (Client error handling = Tool error handling):
The maximum number of retries shall be set to 0 (no automatic retries) except for receiving Negative
response NRC=$23 and $21 detailed description refer to § 9.1.1.2. The application (diagnostic tool
software) will decide wether to retry or not.
Refer to [REF 1]
The ECU is able to handle only half-duplex communication. So, ECU is in receiving mode until the
reception of a request indication from the network layer. After request indication, the ECU switch to
sending mode until the response is sent by the application to the network layer.
OBD ECUs implement 0x7DF CANId. On this OBD CANId, only OBD services (services $00 to $0F)
will be used (refer to ISO 15031-5).
The main difference with ISO15765-3 or 14229-1 is that most services are still based on preceding
version of ISO 14230-3.
Table 1 — Service implementation conventions
Name Description
M Mandatory: The service shall be implemented in any ECU as defined in this document
U User option: The choice to implement or not a service is the responsibility of the function
manager in view of the requirements expressed by his customers (development, after-sales,
manufacturer’s assembly line, etc.).
However, if the choice is made to implement a service, it shall be done as defined in this
document.
Refer to ECU specific application diagnostic document to check if a free service is to be
implemented.
Name Description
Cvt Convention: specifies whether the item is “Mandatory”, “User option” or “Conditional”
Mnem Mnemonic
Hex Value Hexadecimal value
M Mandatory
U User option (function manager’s responsibility)l
C conditional
F Forbidden
NOTE : Supplier specific items (Id definition and ranges, sessions, ...) are not supported by Renault
and Nissan tools.
1) It is implied that the tool always set suppressPosRspMsgIndicationBit to FALSE ('0'). The ECUs shall always send a
response (positive or negative) whatever the value of this bit.
M/U: Mandatory for RENAULT applications (see § 9.3.6.2.3.), System dependant for NISSAN only
applications.
All the services described in the ISO standards are not necessarily implemented. This section provides
a short definition of diagnostic services chosen by RENAULT and NISSAN.
StartDiagnosticSession
The purpose of this service is to allow the tool to switch the ECU into a diagnostic session. A
diagnostic session is a specific operating mode (e.g. Extended Diagnostic session, Reprogramming
session and etc).
ECUReset
This service enables the tool to force the ECU to perform a reset, e.g. a power on reset or to allow a
new default parameter set to become active. The type of reset which is performed is up to the system.
SecurityAccess
The purpose of this service is to allow access to restricted information from the ECU. Proper unlocking
of the ECU is a prerequisite to the tool’s ability to perform some of the more critical functions, such as
deletion or downloading routines in the ECU memory.
CommunicationControl
The purpose of this service is to switch on/off the transmission and/or the reception of certain
messages of an ECU (e.g. application communication messages).
TesterPresent
This service has no action other than to prevent the ECU to automatically return to default session.
ReadDataByLocalIdentifier
The ReadDataByIdentifier service allows the tool to request predefined data record values from the
ECU identified by one LocalIdentifiers. To implement this service is mandatory for keeping
compatibility with current diagnostic tool software.
ReadDataByIdentifier
The ReadDataByIdentifier service allows the tool to request predefined data record values from the
ECU identified by one or more dataIdentifiers. This service ensures compatibility with ISO14229-1.
ReadMemoryByAddress
The purpose of this service is to request, in a single response, the content of a memory area. The
address and the size of the memory area to be read are parameters defined.
ReadScalingDataByIdentifier
The ReadScalingDataByIdentifier service allows the tool to request scaling data record information
from the ECU identified by one or more dataIdentifiers. This service ensures compatibility with
ISO14229-1.
DynamicallyDefineLocalIdentifier
This service shall be used to dynamically define local identifier that may be requested by
ReadDataByLocalIdentifier service. In a single request, several or all data fields of Dynamically
defined Local Identifier may be defined each one by using memory locations or a selected data field of
already existing Local Identifiers.
WriteDataByIdentifier
The WriteDataByIdentifier service allows the tool to change predefined data record values in the ECU
identified by one Identifier. This service ensures compatibility with ISO14229-1.
WriteDataByLocalIdentifier
The purpose of this service is to provide a means for the tool to change the contents of Record Local
Identifier memory locations of the ECU. The Record Local Identifier and associated memory locations
need to be known by the ECU. This service does not allow the tool to change any locations other than
those predefined in the ECU. The number of data bytes included in each Record Local Identifier
depends on the system designer and intent of the usage for that record. The reason why this service is
maintained is that it is used by current Renault / Nissan tools.
WriteMemoryByAddress
The purpose of this service is to overwrite or to set the content of a predefined memory area. The
address, the memory area size and the data to be written are parameters defined.
ClearDiagnosticInformation
The purpose of this service is to provide a means for the tool to command an ECU to clear stored
diagnostic information (including diagnostic CAN fault counters), trouble codes and SnapShotData.
ReadDTCInformation
The purpose of this service is to read from the ECU the number, values and status of stored diagnostic
trouble codes. This service is also used by the tool to access to data values which were stored as a
SnapShotData called Freeze Frame Data in old document and some extended data that contains
helpful information for diagnosis. This service ensures compatibility with ISO14229-1.
InputOutputControlByLocalIdentifier
The purpose of this service is to request the control of an input or output peripheral of the ECU.
StartRoutineByLocalIdentifier
The purpose of this service is to request the start or the status of the execution of a routine which is
resident in an ECU.
StopRoutineByLocalIdentifier
The purpose of this service is to request the stop of the execution of a routine which is resident in an
ECU.
RequestDownload
This service can be used by reprogramming application. However applicability of using this service is
defined by reprogramming specification [REF2].
RequestUpload
This service can be used by reprogramming application. However applicability of using this service is
defined by reprogramming specification [REF2].
TransferData
This service can be used by reprogramming application. However applicability of using this service is
defined by reprogramming specification [REF2].
RequestTransferExit
This service can be used by reprogramming application. However applicability of using this service is
defined by reprogramming specification [REF2].
A negative response may be transmitted by an ECU for replying to any service request that cannot be
acknowledged or when the ECU is not able to completely perform the requested actions.
The failure reason is indicated by the value of the negative response code (NRC_). All possible values
of the NRC code are defined in § 9.1.1.2.
The minimum conditions whereby an ECU will send a negative response are as follows :
The negative response identifier code is $7F mandatory followed by the service identifier of the
request received and by the negative response code indicating the failure reason.
The table below lists and gives the general definition of all the negative response codes authorized by
the tools used in engineering department, plants and after-sales servicing for RENAULT and NISSAN.
This response code indicates that the requested action will not be taken
because the client's latest attempt to gain security access was initiated
before the server's required timeout period had elapsed.
$72 generalProgrammingFailure GPF
This response code indicates that the ECUI detected an error when erasing
or programming a memory location in the permanent memory device (e.g.
Flash Memory).
$7E SubFunctionNotSupportedInActiveSession SFNSIAS
This response code indicates that the requested action will not be taken
because the ECU does not support the requested sub-function in the
session currently active.
$7F ServiceNotSupportedInActiveSession SNSIAS
This response code indicates that the requested action will not be taken
because the ECU does not support the requested service in the session
currently active.
IMPORTANT NOTICE: The NRC $78 IS NOT supported by ANY of the Tools in use at RENAULT
and NISSAN, therefore it shall NEVER be sent by an ECU. Refer to § 9.1.2.2. for additional
information.
A service is long if the Response cannot be sent within the P2CAN_SERVER timing, set to 900 ms (the
service execution time exceeds P2CAN_SERVER timing).
e.g. For reading services, an ECU will have to send a positive response to the tool as soon as data
requested by the tool are ready which might take some time: the performance timing to calculate data
will have to be as short as possible.
Whatever the service, the ECU shall start transmitting a response before the end of P2CAN_SERVER
timing (starting at the end of the request). Even when processing a long execution request, an ECU
shall manage diagnostic request on CAN. The only exception to this rule being reprogrammable ECUs
erasing their flash memory for reprogramming purposes (for more details ref to [REF 2] document).
In some restricted special cases (ex flash erasing), ECU are not able to handle diagnostic on CAN
(only for hardware reasons linked to the service). These cases shall be submitted for approval to
Renault / Nissan responsible departments for diagnostic services.
For each request (Sid and parameters values) that could require long execution time, the rationale for
exceeding P2CAN_SERVER shall be documented by Ecu responsible/supplier and submitted to Renault /
Nissan responsible departments for diagnostic services.
These departments may refuse long execution time for performance reasons.
- for services using memory writing, the ECU could compare the present state of the memory with
the values to be written. If the values are identical, the ECU will respond positively to the service
without writing,
The negative response code $78 shall not be used. Instead, the ECU will send temporary response(s)
with NRC $23 and $21 while the request is being processed according to the following state diagram
(see Fig 2).
When the service execution is complete, the ECU will send the final response for the service request.
This final response is the one which will be referred to as “the response” in all diagnostic specification
documents (this document and all related system specific diagnostic specifications) for all services.
Request reception
Start P2CAN_SERVER
Stop S3SERVER Service
Idle in progress
Processing done
Stop P2CAN_SERVER
Start S3SERVER
S3SERVER
Same request received Send final response
elapsed
Start S3SERVER
Send final response
As a general rule, the service management can be split in 2 different processes described in following
figure 3:
- service communication management interfacing to the network layer, managing the requests and
responses as well as timers (P2CAN_SERVER and S3SERVER),
The process behaviour is detailed on the flowcharts figure 4 to 7 Starting from the reception of a
request from the tool.
Idle
Clear pendingRequest
Go to default session
Idle
Stop S3SERVER
Start P2CAN_SERVER
Service ID NO
Set NRC = $11
known by ECU?
YES
Service allowed in NO
Set NRC = $7F
active session?
YES
NO
Sub Function Set NRC = $12
supported?
YES
YES
LongService = false
Send negative response
Service in progress
LongService = true
Start S3server
Idle
Send negative response
BUSY
BUSY
NO
Start S3server
Same request and Set NRC = $21
parameters?
YES
NO
Same request and Go to default session
parameters?
YES
Idle
Forget memorized service Forget memorized service
and parameters and parameters
Start S3server
Idle
P2CAN_SERVER shall be set to 900 ms independently from the duration time of the execution of a service
which has to be as fast as possible (for performance requirement).
“Busy” means that the ECU is not able to process any new request.
Idle
Launch service
NO
Service parameters Set NRC = $12
OK?
YES
Unlocking
NO required ?
YES
NO
ECU unlocked? Set NRC = $33
YES
NO
Conditions met? Set NRC = $22
For reprog ECU
YES
StartDiagSession YES
For repro ECU
for Reprogram?
NO
Idle
For detailed meaning of “conditions met” and “application error”, refer to each service description.
Function manager will have to describe all those specific conditions for each service.
The restrictions on the possible execution of a service when an IOControl or a routine is in progress
shall be detailed in the system specific diagnostic specification both in the definition of the IOControl or
routine currently in progress and in the description of the executing conditions of the requested
service. If the service cannot be executed, then a negative response with NRC = $22 shall be sent by
the ECU.
tool ECU
Request message A
ICOBLID:
$30$xx$20$yy
$70$xx$01$yy
Request message B
control is in progress
Response *1
*1 Refer to following
tables
*2 Behaviour is system or IOLocalID dependant and shall be defined by the function manager in the
system specific diagnostic specification. Response shall be either a positive response
“$70 $xx $01” or a negative response with NRC = $22.
*3 Whether other IOLocalID’s IOControl services are accepted during IOControl processing is
defined by the function manager. Restrictions on use of simultaneous Local ID’s I/O control shall
be detailed in the system specific diagnostic specification. Response shall be either a positive
response “$70 $xx $01” or a negative response with NRC = $22. It is the responsibility of the tool
to wait for first IOControl completion before starting a new IOControl.
*4 Whether other services are accepted during IOControl processing is defined by the function
manager. Restrictions shall be detailed both in the IOControl definition and in the description of
the new requested service of the system specific diagnostic specification. Response shall be
either a positive response corrresponding to the new requested service or a negative response
with NRC = $22.
tool ECU
Request message A
SRBLID:$31$xx$00$yy
$71$xx$01$yy
Routine in
progress
Request message B
Response *1
Status Request
$31 In progress - $71 $xx $01
-: not applicable
*2 Behaviour is system or RLOCID dependant and shall be defined by the function manager in the
system specific diagnostic specification. Response shall be either a positive response
“$71 $xx $01” or a negative response with NRC = $22.
*3 Whether other RLOCID services are accepted during routine processing is defined by the function
manager. Restrictions on use of simultaneous RLOCID services shall be detailed in the system
specific diagnostic specification. Response shall be either a positive response “$71 $xx $01” or
“$72 $xx $yy” (depending on the requested service) or a negative response with NRC = $22. It is
the responsibility of the tool to wait for first routine completion before starting a new routine.
*4 Whether other services are accepted during routine processing is defined by the function
manager. Restrictions shall be detailed both in the routine definition and in the description of the
new requested service of the system specific diagnostic specification. Response shall be either a
positive response corrresponding to the new requested service or a negative response with
NRC = $22.
Services listed above use as parameter an identifier related to the data to be processed. This
parameter called “LocalIdentifier” organizes data frame according to specific use (standard, supplier,
system specific, ...).
The range [$00 - $7F] is assigned to the ECU specific “localIdentifier”. All values are not implemented.
To get the list of specific LocalIdentifiers (LId) used in the range [$00 - $7F] the test equipment shall
request reserved localIdentifier indicating by a bit coding which LIds are supported by the ECU.
9.1.5.1.1.Request Implementation
Table 10 — Request message definition
A_Data Byte Service and Parameter Hex Value
#1 Service request $21, $30, $31, $32, $3B *
#2 Lid $00, $20, $40, $60
* $30, $31, $32 $3B ==> Not applicable for Renault ECU. Applicable for Nissan ECU & common R/N
ECU"
* Bit 0 of Data D indicates that there are additional non reserved LIds supported in an upper range.
The tool shall request the corresponding reserved LId ($20 or $40 or $60) to receive the supported
remaining Lids.
The external test equipment shall only request reserved LIds $20, $40 and $60 if bit 0 of Data D in the
previous “Supported LId” response message is set to ‘1’.
Bit 0 of Data D linked to the reserved LId = $80 shall always be set to 0 because this LId is not used
for system specific data, it has a standard definition.
To get the list of identifiers used in the range [$1000 - $1FFF] the test equipment shall request
reserved Id indicating by a bit coding which Ids are supported by the ECU.
Reserved Ids are $1x00, $1x20, $1x40 $1x60, $1x80, $1xA0, $1xC0 and $1xE0 where x may be a
value from $1 to $F.
9.1.5.2.1.Request Implementation
Table 13 — Request message definition
A_Data Byte Service and Parameter Hexa value
#1 Service request $22
#2 Id High Byte $1x
#3 Id Low Byte $00, $20, $40 $60, $80, $A0, $C0,
$E0
* Bit 0 of Data D indicates that there are additional non reserved Ids supported in an upper range. The
tool shall request the corresponding Id low byte ($20 or $40 or $60, ..., $E0 ) to receive the remaining
supported Ids.
When bit 0 of Data D is set to 0 in an Id range, there is no need for the external test equipment to
request Ids in the next following range with the same high byte. In that case, if the tool requests these
Ids, the ECU will return a negative response with NRC $12.
In the example hereafter the test equipment requests ECU #1 the list of supported Lids for the
WriteDataByLocalIdentifier service and requests ECU#2 the list of supported Lids for
I/OControlByLocalIdentifier service.
The external test equipment requests supported LIds (LIds = $00) from the ECU#1.
Table 16 — Request message definition
A_Data Byte Service and Parameter Hex Value
#1 Request current Lids for WriteDataByLocalIdentifier service $3B
#2 Reserved LId used to determine LIds support for LIds $01-$20 $00
The ECU#1 sends back the response corresponding to LIds from the range [$01 - $20].
ECU #1 indicates with the response message that it does not support LId $20, so the external test
equipment has not to send another request, it has got all supported LId by ECU #1.
The external test equipment requests supported LIds (LId = $00) from the ECU#2.
Table 18 — Request message definition
A_Data Byte Service and Parameter Hex Value
#1 Request current Lids for I/OControlByLocalIdentifier $30
#2 Reserved LId used to determine LIds support for LIds $01-$20 $00
The ECU#2 send back the response corresponding to LIds from the range [$01 - $20].
The ECU #2 supports the LIDs: $01, $03, $08, $09, $0C, $0F, $10, $11, $13, $15, $1A, $1C, and $20.
ECU #2 indicates with the response message that it supports LId $20, so the external test equipment
has to send another request to know which LId are supported by ECU #2.
The external test equipment requests supported LIds (LId = $20) from the ECU#2.
The ECU#2 send back the response corresponding to LIds from the range [$21 - $40].
ECU #2 indicates with the response message that it does not support LId $40, so the external test
equipment has not to send another request, it has got all supported LId by ECU #2.
The StartDiagnosticSession service is used to enable different diagnostic sessions in the ECU(s).
A diagnostic session enables a specific set of diagnostic services and/or functionality in the ECU(s).
The function manager defines in the ECU specific application diagnostic document the exact set of
services and/or functionality enabled in each diagnostic session (superset of functionality that is
available in the defaultSession) The diagnostic functionality of the defaultSession shall also be
available when switching to any non-default diagnostic session (except for reprogramming session).
There shall always be exactly one diagnostic session active in an ECU at a time. An ECU shall always
start the default diagnostic session when powered up. If no other diagnostic session is started, then
the default diagnostic session shall be running as long as the ECU is powered and the ECU shall be
in locked state.
If the tool has requested a diagnostic session, which is already running, then the ECU shall send a
positive response message and behave as shown in Fig. 11 — ECU diagnostic session state diagram
that describes the ECU internal behaviour when transitioning between sessions.
While processing the service, the ECU remains in the previous session and will enter the new session
upon transmission of a positive response.
To start a new diagnostic session an ECU may request that certain conditions be fulfilled. All such
conditions are user defined and specified in application specific diagnostic document. The access
requirements to each diagnostic session shall be defined by the user of this diagnostic session and
submitted to Renault / Nissan responsible departments for diagnostic services for information. . Once
in the new diagnostic session, any change in this preconditions shall not cause the ECU to exit this
session; if security or safety issues are at stake, the ECU may subsequently restrict access to internal
diagnostic resources, normally available in the session, by returning an appropriate NRC code
(typically $22) when the resources are addressed by the tool. Some applicative functions may also be
inhibited and the vehicle user notified through a dedicated message or warning indicator. Such
limitations shall be detailed on a per resource basis (data or service) in the system specific diagnostic
specification.
Fig. 11 — ECU diagnostic session state diagram provides an overview about the diagnostic session
transition and what the ECU shall do when it transitions to another session.
o th e r sessio n
(2 )
de fa u lt se ssio n sa m e o r o th e r se ssio n
any
d e fa u lt
(1 ) o th e r (3 )
s es s io n
s e ss io n
(4 )
d efa u lt se ssio n
1) When the ECU is in the defaultSession and the tool requests to start the defaultSession then the
ECU shall re-initialize the defaultSession completely, which means that e.g. each DDLID
(DynamicallyDefineLocalIdentifier) shall be reset. The ECU shall reset all
activated/initiated/changed settings/controls during the activated session. This does not include
long term changes programmed into non-volatile memory.
2) When the ECU transitions from the defaultSession to any other session than the defaultSession
then the ECU shall initialize the diagnostic session, which means e.g. each DDLID shall be reset
and security shall be enabled (go to locked state).
3) When the ECU transitions from any diagnostic session other than the defaultSession to another
session other than the defaultSession (including the currently active diagnostic session) then the
ECU shall (re-) initialize the diagnostic session, which means that e.g. each DDLID shall be reset
and security shall be enabled (go to locked state).
4) When the ECU transitions from any diagnostic session other than the default session to the
defaultSession then the ECU shall (re-) initialize the default session, which means that e.g. each
DDLID shall be reset and security shall be enabled (go to locked state). The ECU shall reset all
activated/initiated/changed settings/controls during the current session. This does not include
long term changes programmed into non-volatile memory.
Unless otherwise specified on a per routine basis, the following behavior applies: when a routine is in
progress and a new session (different from the active session) is required by the tool, the ECU service
processing shall wait the completion of the routine(s). If the ECU can’t complete the routine before
P2CAN_SERVER, it has to respond negatively to the StartDiagnosticSession request according to § 9.1.3.
In application mode, no ECU reset is allowed when going back to default session (for boot mode
behavior, ref to [REF 2] document). The nominal operating conditions shall be restored when going
back to default session.
For OBD related ECU no accessibility limitation for OBD services is required whatever the active
session.
When a specific supplier diagnostic session is started, all CAN identifiers used for the supplier needs
shall be allowed by Renault and Nissan.
Table 22 shows the services, which are allowed (x) during the defaultSession and the non-
defaultSession (timed services). Any non-defaultSession is tied to a diagnostic session timer that has
to be kept active by the tool. With the exception of the expiration of the diagnostic session timer (see
§9.1.3.1 Service communication management process), an ECU shall never leave an active non
default session by itself : the only way to return to the default session when the tool is connected and
in communication with the ECU is performed through the StartDiagnosticSession.
”Allowed” in this context does not mean the implementation is mandatory; it is up to the system designer to
decide whether an “allowed” service is permitted or not in a session.. If a service is allowed in any session
but some parameters (LID or DID) or sub functions are restricted to some specific sessions, the ECU shall
respond with the appropriate NRC (typically $22 for LID or DID and $7E for sub functions) when these
parameters are addressed in the wrong session. Such restrictions are to be detailed in the sytem specific
diagnostic service specification on a per service or parameter basis.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 27.
ONLY USED IF ALL RELATED INTER-SYSTEMS ISSUES HAVE BEEN CLEARLY IDENTIFIED AND
SORTED OUT (SOLVED).
This service requests the ECU to effectively perform an ECU reset based on the content of the
resetType parameter value embedded in the ECUReset request message. The ECUReset positive
response message shall be sent before the reset is executed in the ECU(s).
After a successful ECU reset with resetType parameter set hardReset or softReset, the ECU shall
activate the defaultSession.
When receiving this service, the ECU shall first check if the requested reset can be performed in
present conditions.
This service allows to reset the teach-ins. When the value $FF is used, it shall imply the cancellation of
all teach-ins executed. Depending on the needs, the function manager may define other parameter
values allowing a reset for each type of implemented teach-ins.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 33.
Table 33 — Supported negative response codes
Hex Description Cvt Mnem
$12 subFunctionNotSupported M SFNS
Send if the parameter in the request message is not supported
$22 conditionsNotCorrect M CNC
This code shall be returned if the criteria for the EcuReset request are not
met.
For example if a specific resetType requires a non default session and the
current session is default session.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time service is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
$33 SecurityAccessDenied M SAD
This code shall be sent if the ECUReset requires an unlocked ECU.
$7F ServiceNotSupportedInActiveSession M SNSIAS
See § 9.1.1.2.
The purpose of this service is to provide a mean to access data and/or diagnostic services, which
have restricted access for security, emissions, or safety reasons. Diagnostic services for
downloading/uploading routines or data into an ECU and reading specific memory locations from an
ECU are situations where security access may be required. Improper routines or data downloaded into
an ECU could potentially damage the electronics or other vehicle components or risk the vehicle’s
compliance to emission, safety, or security standards. The security concept uses a seed and key
relationship.
- ECU responds that the “Key” was valid and that it will unlock itself.
When in default session, including after power up/reset, ECU is always locked.
An application specific time delay3 might be required before the ECU can positively respond to a
service SecurityAccess ‘requestSeed’ message from the tool after ECU power up/reset. If a delay
timer is supported then this delay shall be activated after a failed SecurityAccess service attempt (see
further description below) and when the ECU is powered up/reset and a previously performed
SecurityAccess service has failed. In case the ECU supports a delay timer then after a successful
SecurityAccess service execution the ECU internal indication information for a delay timer invocation
on a power up/reset shall be cleared by the ECU. In case the ECU supports a delay timer and cannot
determine if the last SecurityAccess service prior to the power up/reset has failed then the delay timer
shall always be active after power up/reset.
The tool shall request the ECU to "unlock" by sending the service SecurityAccess ‘requestSeed’
message. The ECU shall respond by sending a "seed" using the service SecurityAccess ‘requestSeed’
positive response message. The tool shall then respond by returning a "key" number back to the ECU
using the service SecurityAccess ‘sendKey’ request message. The ECU shall compare this "key" to
one internally stored/calculated. If the two numbers match, then the ECU shall enable ("unlock") the
tool's access to specific services/data and indicate that with the service SecurityAccess ‘sendKey’
positive response message. Depending on the application, the system designer may specify a delay
after a certain number of failed attempts. An invalid key requires the tool to start over from the
beginning with a SecurityAccess request message.
If an ECU supports security, but is already unlocked when a SecurityAccess ‘requestSeed’ message is
received, that ECU shall respond with a SecurityAccess ‘requestSeed’ negative response
message service with NRC equal to CNC ($22).
Attempts to access security shall not prevent normal vehicle communications or other diagnostic
communication.
ECUs, which provide security shall support reject messages if a secure service is requested while the
ECU is locked.
Some diagnostic functions/services requested during a specific diagnostic session may require a
successful security access sequence. In such case the following sequence of services shall be
required:
- StartDiagnosticSession service,
- SecurityAccess service,
There are different accessModes allowed for an enabled diagnosticSession (session started) in the
ECU.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 40.
Table 40 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
This code shall be returned if the securityAccessType parameter in the
request message is not supported.
$22 conditionsNotCorrect M CNC
This code shall be returned if the criteria for the request SecurityAccess are
not met, or if the ECU is already in unlocked state.
ONLY USED IF ALL RELATED INTER-SYSTEMS ISSUES HAVE BEEN CLEARLY IDENTIFIED AND
SORTED OUT (SOLVED)
The purpose of this service is to switch on/off the transmission and/or the reception of certain
messages of (a) ECU(s) (e.g. application communication messages).
The sub-function parameter controlType contains information on how the ECU shall modify
the communication type referenced in the communicationType parameter
(suppressPosRspMsgIndicationBit (bit 7 is set to 0) not shown in Table 42).
Table 42 — Request message sub-function parameter definition
Hex Description Cvt Mnem
Bit 6-0
$00 enableRxAndTx U ERXTX
This value indicates that the reception and transmission of messages shall
be enabled for the specified communicationType.
$01 enableRxAndDisableTx U ERXDTX
This value indicates that the reception of messages shall be enabled and
the transmission shall be disabled for the specified communicationType.
$02 disableRxAndEnableTx U DRXETX
This value indicates that the reception of messages shall be disabled and
the transmission shall be enabled for the specified communicationType.
$03 disableRxAndTx U DRXTX
This value indicates that the reception and transmission of messages shall
be disabled for the specified communicationType.
$04 - $7F Reserved U RESRVD
This range of values is reserved by this document for future definition.
Definition
communicationType
This parameter is used to reference the kind of communication to be controlled.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 47.
Table 47 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
Send if the sub-function parameter in the request message is not
supported
$22 conditionsNotCorrect M CNC
Used when the ECU is in a critical normal mode activity and therefore
cannot disable/enable the requested communication type.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time service is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
$33 SecurityAccessDenied M SAD
See § 9.1.1.2.
$7E subFunctionNotSupportedInActiveSession M SFNSIAS
See § 9.1.1.2.
$7F ServiceNotSupportedInActiveSession M SNSIAS
See § 9.1.1.2.
This service is used to indicate to an ECU that a tool is still connected to the vehicle and that certain
diagnostic services (Timed services) and/or communication that have been previously activated are to
remain active.
This service is used to keep the ECU in a diagnostic session other than the defaultSession. This is
done by transmitting the TesterPresent request message in case of the absence of other diagnostic
services to prevent the ECU from automatically returning to the defaultSession. The detailed session
requirements that apply to the use of this service when keeping a single ECU in a diagnostic session
other than the defaultSession can be found in the implementation specifications of § 9.1.3.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 51.
Table 51 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
This code shall be returned if the responseRequired parameter in the
request message is not supported.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in
progress, see § 9.1.2.2.
The readDataByLocalIdentifier service requests data record values from the ECU identified by a
recordLocalIdentifier. The data record values are sent via the readDataByLocalIdentifier positive
response message. The format and definition of the “recordValues” are system specific (except for
standard frames). “RecordValues” may include analogue input and output signals, digital input and
output signals, internal data and system status information.
This service is used in “one shot” mode to read ECU data. Periodic transmission mode is not allowed.
The “Local Identifiers” $80, $81, $82, $83, $84, - $86, $B0 , $B1 and $B2 - $B4 have a cross definition
for all the ECUs. Their content and/or format are standardized (see following section).
The “Local Identifiers” of ranges $85 $87 to $8F and $B3, $B5 to $BF are reserved for future
transverse applications.
The use of “Local Identifiers” from range [$00 - $7F] is defined § 9.1.5.
As a general rule, each local ID definition except $00, $20, $40 and $60 is the same for both read and
write services.
Definition
Record Local identifier
This parameter is an echo of the data parameterLocalDataIdentifier from the request message.
Record Value
This parameter is used by the ReadDataByLocalIdentifier positive response message to provide the
requested data record values to the tool. Some Record Value structure are standardized for Renaut and
Nissan applications (see § 9.3.1.5.). The exact content of the Record Values are detailled in the system
specific diagnostic specification.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 57.
Table 57 — Supported negative response codes
The value of parameters “spare parts Number”, “diagnostic identification code”, “supplier Number” and
“Manufacturer identification code” is provided by RENAULT/NISSAN to the supplier.
An agreement must be reached between the RENAULT/NISSAN function manager and the supplier to
define the value of parameters “Hardware Number”, “Software Number”, “Edition Number” and
“Calibration Number”.
The Diagnostic Code Identification identifies the content of the ECU diagnostic application. This code
is linked to the address attributed to each family of ECUs. Its value is assigned by the after-sales
diagnostic manager.
The use definition of 3 data bytes “Other system features” is the responsibility of the function manager.
Nissan responsible departments for diagnostic services will define precisely for each ECU of each vehicle
project which NISSAN Ni format will have to be used.
Nissan N4: Supplier number + Other system features = 6 bytes (ASCII, upper-setting, blank $20)
For an example, if the suppllier code is “ABCD”, Supplier number is $41$42$43, and Other system features
is $44$20$20.
For 5Digits applications, format used is Renault R2. PartNo and HardwareNo are a part of the
whole numbers (only the right fifth ASCII bytes of the 10 ASCII bytes references).
ApprovalNumberType (1 byte). (possible values are : $00 for N/A, $01 for hardware, $02 for software).
Values listed in above table for “Manufacturer identification code” are the only possibles
Important rules :
- for RENAULT’s ECU the identification frame is accessible by the “LocalIdentifier” $80,
- for NISSAN’s ECU the identification frame is accessible by the “LocalIdentifier” $83,
- common ECU shall implement both identification frames $80 and $83,
- the byte “Manufacturer identification code” shall be present and correctly set whatever the identification
frame ($80 or $83).
The V.I.N structure is standardized and includes 17 alphanumerical characters. Upon writing, the
diagnostic tool transmits the ASCII encoded characters to which it adds a 2 bytes CRC. The ECU shall
not implement a CRC computation algorithm; it shall simply manage a 19 bytes block to be returned
intact upon reception of a read request. It is conceivable for the ECU to use transcoding for data
storage, however it is mandatory that the data are sent back with their original coding when
responding to the read (VIN) service.
For the content of the frame, refer to [REF 3] document specific for each ECU.
For the applicability of LocalIdentifier $B1-$BF, refer to [REF 3] document specific for each ECU.
For RENAULT use, the format for the record Unitary data traceability is ASCII alphanumeric
characters :
The use of “space” character ($20 value) may be used only as a padding character.
For reprogrammable ECU, traceability informations must not be modified during reprogramming
procedure.
Bytes 3 to 5.
Renault side = Defined by the supplier.
Nissan Side = Part code.
The ReadDataByIdentifier service allows the tool to request data record values from the ECU
identified by one or more dataIdentifiers.
The tool request message contains one or more two (2) byte dataIdentifier values that identify data
record(s) maintained by the ECU. The format and definition of the dataRecord may include analog
input and output signals, digital input and output signals, internal data, and system status information if
supported by the ECU.
The ECU may limit the number of dataIdentifiers that can be simultaneously requested as agreed
upon by RENAULT/NISSAN and system supplier.
Upon receiving a ReadDataByIdentifier request, the ECU shall access the data elements of the
records specified by the dataIdentifier parameter(s) and transmit their value in one single
ReadDataByIdentifier positive response containing the associated dataRecord parameter(s). The
request message may contain the same dataIdentifier multiple times. The ECU shall treat each
dataIdentifier as a separate parameter and respond with data for each dataIdentifier as often as
requested.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 68.
Table 68 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
This code shall be returned if all the DataIdentifier in the request message is
not supported.
This code shall also be returned if the requested number of data identifier
exceeds the maximum limit supported by the ECU in a single request.
$22 conditionsNotCorrect U CNC
This response code shall be sent if the operating conditions of the ECU are
not met to perform the required action.
This code shall also be returned if ALL the requested data identifiers are
available in a session different from the current session; e.g. when the
current session is default session and all requested DID are available in a
non default session.
$33 SecurityAccessDenied M SAD
This code shall be sent if the DataIdentifier requires an unlocked ECU.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
The ReadMemoryByAddress service allows the tool to request memory data from the ECU via
provided starting address and size of memory to be read.
The ReadMemoryByAddress request message is used to request memory data from the ECU
identified by the parameter memoryAddress and memorySize.
The number of bytes used for the memoryAddress is 4 and for memorySize is 2.
In case of overlapping memory areas it is possible to use the MA_B1 memoryAddress MSB as a
memoryIdentifier. (e.g. use of internal and external flash memory, EEPROM,…).
This service is highly recommended during development phase to access dynamic data for debugging
purposes. It may also be used for rescue mode along with SecurityAccess service.
The supplier has access to the microprocessor and peripheral registers; checking these components,
via this service, may seriously interfere with the operation of the ECU. It is therefore imperative that an
address filter be installed to avoid such incidents. The specification of this filter shall be provided by
the supplier to the function manager.
Some information must remain completely inaccessible by this service. The function manager shall
define the address filters to be installed to meet this requirement. Such protection filters apply for
example to BOOT software for reprogrammable ECUs refer to [REF 2] and Application software.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in
The ReadScalingDataByIdentifier service allows the tool to request scaling data record information
from the ECU identified by one or more dataIdentifiers.
The tool request message contains a two byte dataIdentifier value that identifies data record(s)
maintained by the ECU (refer to § 9.3.2. for allowed dataIdentifier values). The format and definition of
the dataRecord shall be vehicle manufacturer specific, and may include analog input and output
signals, digital input and output signals, internal data, and system status information if supported by
the ECU.
Upon receiving a ReadScalingDataByIdentifier request, the ECU shall access the scaling information
associated with the specified dataIdentifier parameter and transmit the scaling information values in
one ReadScalingDataByIdentifier positive response.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 78.
Table 78 — Supported negative response codes
The DynamicallyDefineDataIdentifier service allows the tool to dynamically define in an ECU a data
identifier that can be read via the ReadDataByLocalIdentifier service at a later time.
The intention of this service is to provide the tool with the ability to group one or more data elements
into a data superset that can be requested via the ReadDataByLocalIdentifier / ReadDataByIdentifier /
ReadMemoryByAddress services. The data elements to be grouped together can either be referenced
by:
This service allows greater flexibility in handling data needs of the diagnostic application that extend
beyond the information that can be read via statically defined data identifiers, and can also be used to
reduce bandwidth utilization by avoiding overhead penalty associated with frequent request/response
transactions.
IMPORTANT: Defined data Identifier shall be reset via session change / power down.
- The parameter LocalIdentifierDataLength shall specify the number of data bytes referenced by
the parameter recordLocalIdentifier.
- The parameter positionInRecordLocal/Identifier shall specify the starting position in the record
stored in the ECU’s memory.
9.3.5.2.1.2. definitionMode=defineByMemoryAddress
Table 80 — Request message definition
A_Data Byte Parameter Name Cvt Hex Value Mnem
#1 DynamicallyDefineLocalIdentifier Request Service Id M $2C DLIDDY
#2 DynamicallyDefinedLocalIdentifier M $E0-$EF DDLOCID
#3 definitionMode=[defineByMemoryAddress]#1 M $03 DEFMODE
#4 PositionInDynamicallyDefinedLocalIdentifier#1 M $xx PIDYDLID
#5 MemoryAddressDataLength #1 M $xx MEMADDL
#6 MemoryAddress#1 (Highest Byte) M $xx MEMAHH
#7 MemoryAddress#1 (HL byte) M $xx MEMAHL
#8 MemoryAddress#1 (LH byte) M $xx MEMALH
#9 MemoryAddress#1 (Lowest Byte) M $xx MEMALL
#10 definitionMode=[defineByMemoryAddress]#2 C $03 DEFMODE
#11 PositionInDynamicallyDefinedLocalIdentifier#2 C $xx PIDYDLID
#12 MemoryAddressDataLength #2 C $xx MEMADDL
#13 MemoryAddress#2 (Highest Byte) C $xx MEMAHH
#14 MemoryAddress#2 (HL byte) C $xx MEMAHL
#15 MemoryAddress#2 (LH byte) C $xx MEMALH
#16 MemoryAddress#2 (Lowest Byte) C $xx MEMALL
: : : : :
#n-6 definitionMode=[defineByMemoryAddress]#m C $03 DEFMODE
#n-5 PositionInDynamicallyDefinedLocalIdentifier#m C $xx PIDYDLID
#n-4 MemoryAddressDataLength #m C $xx MEMADDL
#n-3 MemoryAddress#m (Highest Byte) C $xx MEMAHH
#n-2 MemoryAddress#m (HL Byte) C $xx MEMAHL
#n-1 MemoryAddress#m (LH Byte) C $xx MEMALH
#n MemoryAddress#m (Lowest Byte) C $xx MEMALL
- The parameter MemoryAddressDataLength shall specify the number of data bytes starting at the
specified memoryAddress in the ECU’s memory.
The parameter identifies the position of the data in the readDataByLocal/Identifier positive response
message.
MemoryAddressDataLength, IdentifierDataLength, LocalIdentifierDataLength
These parameters identify the number of bytes of data identified by the MemoryAddress or recordIdentifier or
recordLocalIdentifier. Its format is an 8 bits format.
memoryAddress
The parameter identifies the start address of a data record in the ECU’s memory. Its format is a 32 bits
format. A 24 bits format is also allowed.
positionInRecordLocalIdentifier
The parameter identifies the position in the data record identified by the recordLocal/Identifier in the ECU’s
memory.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 87.
Table 87 — Supported negative response codes
Hex Description Cvt Mnem
$12 subFunctionNotSupported M SFNS
This response code shall be sent if one of the parameters of the request is
not correct.
$22 conditionsNotCorrect M CNC
This code shall be returned if the operating conditions of the ECU are not
met to perform the DDLID service.
$33 securityAccessDenied M SAD
This code shall be sent if
1. any data identifier (dynamicallyDefinedDataIdentifier or any
sourceDataIdentifier) in the request message is secured and the
ECU is not in an unlocked state.
2. any memory address in the request message is secured and the
ECU is not in an unlocked state.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
The example builds a dynamic data identifier (DynamicallyDefinedLocalIdentifier: E0) using the
defineByLocalIdentifier method and then sends a ReadDataByLocalIdentifier request to read the just
configured dynamic data identifier.
The following table shall be used for the example below. Note that the values being reported may
change over time on a real vehicle, but are shown to be constants for the sake of clarity.
Table 88 — Composit data blocks – Local Identifier
LID Data Byte Data Record Contents. Byte Value
$05 #1 Water temperature: TWN $7F
#2 Vehicle speed: VSP $27
#3 $A0
#4 Battery voltage: VB $31
#5 Intake air temperature: TAN $56
#6 throttle valve opening: TVO $15
#7 engine speed: NRPM $25
#8 $07
$07 #1 Fuel injection time: TISTd $25
#2 $51
#3 $A0
#4 $7A
#5 Throttle sensor voltage: TPSV $0C
#6 $25
- write on ECU memory the data relevant to Engineering, After-Sales, Plant Process (example:
date) or Quality Department (or other),
- correct certain parameters (example: injection idle rate setting) within the limits fully controlled by
the ECU.
It might be necessary to take certain precautions regarding vehicle production and last After-Sales
operation dates (e.g. prohibit the writing of the plant vehicle production date in the After-Sales
network). It is the responsibility of the function manager to specify this to the ECU supplier.
Depending on the Local ID, data may be written either on volatile memory or on non-volatile memory.
The choice will be done regarding diagnostic communication performance.
This service shall not be used to reset the memory including the stored fault codes.
As a general rule, each local ID definition except $00, $20, $40 and $60 is the same for both read and
write services.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 98.
Table 98 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
This response code shall be sent if
1. The RecordLocalIdentifier in the request message is not supported in the
ECU or the RecordLocalIdentifier is supported for read only purpose (via
ReadDataByLocalIdentifier service).
2. Any data transmitted in the request message after the
RecordLocalIdentifier is invalid (if applicable to the node).
3. The length of the message is wrong.
$22 conditionsNotCorrect U CNC
This code shall be returned if the operating conditions of the ECU are not met to
perform the WriteDataByLocalIdentifier service.
This code shall be returned if the the service is allowed in the current session but
the addressed RecordLocalIdentifier is not accessible in this session.
$33 securityAccessDenied M SAD
This code shall be sent if the LocalID, which reference a specific address, is
secured and the ECU is not in an unlocked state.
$72 generalProgrammingFailure M GPF
This return code shall be sent if the server detects an error when writing to a
memory location.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in progress,
see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
The WriteDataByIdentifier service allows the tool to write information into the server at an internal
location specified by the provided data identifier.
The WriteDataByIdentifier service is used by the tool to write a dataRecord to an ECU. The data is
identified by a dataIdentifier, and may or may not be secured. It is the function manager’s
responsibility that the ECU conditions are met when performing this service.
NOTE: The ECU may restrict or prohibit write access to certain dataIdentifier values (as defined by
the system supplier / function manager for read-only identifiers, etc.).
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 103.
Table 103 — Supported negative response codes
Hex Description Cvt Mnem
$12 subFunctionNotSupported-InvalidFormat M SFNS
This response code shall be sent if
1. The length of the message is wrong.
2. The dataIdentifier in the request message is not supported in the ECU or the
dataIdentifier is supported for read only purpose (via ReadDataByIdentifier
service).
Any data transmitted in the request messager after the dataIdentifier is invalid (if
applicable to the node).
$22 conditionsNotCorrect U CNC
This response code shall be sent if the operating conditions of the ECU are not
met to perform the required action.
This code shall be returned if the the service is allowed in the current session but
the addressed Data Identifier is not accessible in this session
$33 securityAccessDenied M SAD
This code shall be sent if the dataIdentifier, which reference a specific address, is
secured and the ECU is not in an unlocked state.
The WriteMemoryByAddress service allows the tool to write information into the ECU at one or more
contiguous memory locations.
The format and definition of the dataRecord is application specific, and may or may not be secured. It
is the function manager responsibility to assure that the ECU conditions are met when performing this
service. Possible uses for this service are:
The supplier has access to the microprocessor registers and its peripherals; the writing of these
components, via this service, may seriously interfere with the operation of the ECU. It is therefore
imperative that he install an address filter to avoid such incidents. The specification of this filter shall
be provided by the supplier to the function manager.
Certain information items must remain completely inaccessible to this service. The address filters to be
installed shall be negotiated between the function manager and the supplier (example: “lock code” on
the engine management system or on all ECUs contributing to the vehicle immobilization function).
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 108.
The ClearDiagnosticInformation service is used by the tool to clear diagnostic information in an ECUs’
memory.
The ECU shall send a positive response when the ClearDiagnosticInformation service is completely
processed. The ECU shall send a positive response even if no DTC's are stored. If an ECU supports
multiple copies of DTC status information in memory (e.g. one copy in RAM and one copy in
EEPROM), the ECU shall clear the copy used by the ReadDTCInformation status reporting service
followed by the remaining copy.
The request message of the tool contains 1 parameter. The parameter groupOfDTC allows the tool to
clear a group of DTC's (e.g., Powertrain, Body, Chassis, etc.), or a specific DTC. Unless otherwise
stated, the ECU shall clear both emissions-related and non emissions-related DTC information
from memory for the requested group.
DTC information reset / cleared via this service includes but is not limited to the following :
- other DTC related data such as first/most recent DTC, flags, counters, timers, etc. specific to
DTC's.
- CAN network autodiagnostic counters included in LocalIdentifiers defined for networks diagnostic
($82, $85-$8F).
Any DTC information stored in an optionally available DTC mirror memory in the ECU is not affected
by this service (see ReadDTCInformation (19 hex) service in section 9.4.2. for DTC mirror memory
definition).
There are no data parameters used by this service in the positive response message.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 113.
Table 113 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
The length of the message is wrong
This return code shall be sent if the specified groupOfDTC parameter is not
supported.
$22 conditionsNotCorrect C CNC
This response code shall be used if conditions within the ECU prevent the
clearing of DTC related information stored in the ECU.
The function manager shall list all these conditions
Presence of a failure is not to be considered as such a preventing condition
$72 generalProgrammingFailure M GPF
This return code shall be sent if the ECU detects an error when writing to a
memory location.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
This service allows the tool to read the status of Diagnostic Trouble Code (DTC) information from any
ECU. The service is based on Sub-functions. The exact description is available below on a per sub-
function basis.
The sub-function parameters are used by this service to select one of the DTC report types specified
in the table below.
Table 114 — subFunction definition
Hex Description Cvt. Mnem.
Not allowed
$00 F
Reserved by the document
reportNumberOfDTCByStatusMask
$01 This parameter specifies that the ECU shall transmit to the tool the U RNODTCBSM
number of DTC's matching a tool defined status mask.
reportDTCByStatusMask
$02 This parameter specifies that the ECU shall transmit to the tool a list of M RDTCBSM
DTC's and corresponding statuses matching a tool defined status mask.
reportDTCSnapshotIdentification
This parameter specifies that the ECU shall transmit to the tool all
$03 DTCSnapshot data record identifications (DTC number(s) and U RDTCSSI
DTCSnapshot record number(s)).
Snapshot is same function as FreezeFrameData.
reportDTCSnapshotRecordByDTCNumber (FreezeFrameData)
This parameter specifies that the ECU shall transmit to the tool the RDTCSSBDT
$04 U
DTCSnapshot record(s) associated with a tool defined DTC number C
and DTCSnapshot record number.
reportDTCExtendedDataRecordByDTCNumber
This parameter specifies that the ECU shall transmit to the tool the RDTCEDRBD
$06 M
DTCExtendedData record(s) associated with a tool defined DTC N
number and DTCExtendedData record number (FF hex for all records).
reportSupportedDTC
$0A This parameter specifies that the ECU shall transmit to the tool a list of U RSUPDTC
all DTC's and corresponding statuses supported within the ECU.
reportFirstTestFailedDTC
This parameter specifies that the ECU shall transmit to the tool the first
$0B failed DTC to be detected by the ECU since the last clear of diagnostic U RFTFDTC
information. Note that the information reported via this sub-function
parameter shall be independent of whether or not the DTC was
confirmed or aged.
reportMostRecentTestFailedDTC
This parameter specifies that the ECU shall transmit to the tool the most
recent failed DTC to be detected by the ECU since the last clear of
$0D diagnostic information. Note that the information reported via this sub- U RMRTFDTC
function parameter shall be independent of whether or not the DTC was
confirmed or aged.
reportMostRecentConfirmedDTC
This parameter specifies that the ECU shall transmit to the tool the most
recent confirmed DTC to be detected by the ECU since the last clear of
diagnostic information.
$0E Note that the information reported via this sub-function parameter shall U RMRCDTC
be independent of the aging process of confirmed DTC's (e.g. if a DTC
ages such that its status is allowed to be reset, the first confirmed DTC
record shall continue to be preserved by the ECU assuming no other
DTC's become confirmed afterwards).
reportMirrorMemoryDTCByStatusMask
This parameter specifies that the ECU shall transmit to the tool a list of
RMMDTCBS
$0F DTC's out of the DTC mirror memory and corresponding statuses U
M
matching a tool defined status mask.
reportMirrorMemoryDTCExtendedDataRecordByDTCNumber
This parameter specifies that the ECU shall transmit to the tool the
DTCExtendedData record(s) - out of the DTC mirror memory - RMMDEDRB
$10 U
associated with a tool defined DTC number and DTCExtendedData DN
record number (FF hex for all records) DTC's.
reportNumberOfMirrorMemoryDTCByStatusMask
This parameter specifies that the ECU shall transmit to the tool the
RNOMMDTCB
$11 number of DTC's out of mirror memory matching a tool defined status U
SM
mask.
reportNumberOfEmissionsRelatedOBDDTCByStatusMask
This parameter specifies that the ECU shall transmit to the tool the
RNOOBDDTC
$12 number of emissions-related OBD DTC's matching a tool defined status U
BSM
mask.
reportEmissionsRelatedOBDDTCByStatusMask
This parameter specifies that the ECU shall transmit to the tool a list of
ROBDDTCBS
$13 emissions-related OBD DTC's and corresponding statuses matching a U
M
tool defined status mask.
All sub-functions shall be supported in any session including default session. Sub-functions $0F, $10
and $11 (related to MirrorMemory) may be protected by a security access.
All the sub-functions detailed in the previous section are using the following parameters:
DTCStatusMask
Contains eight (8) DTC status bits. The definitions for each of the eight (8) bits are specified in the
table below. This byte is used in the request message to allow a tool to request DTC information for
the DTC's whose status matches the DTCStatusMask. A DTC’s status matches the DTCStatusMask if
any one of the DTC’s actual status bits is set to ‘1’ and the corresponding status bit in the
DTCStatusMask is also set to ‘1’ (i.e., if the DTCStatusMask is bit-wise logically ANDed with the
DTC’s actual status and the result is non-zero, then a match has occurred). If the tool specifies a
status mask that contains bits that the ECU does not support, then the ECU shall process the DTC
information using only the bits that it does support.
7
result ( DTCj ) = ∑ bji • mi • SAMi
Matching result can be expressed as: i =0 where mi is bit i of the
requetsd DTCstatusMask, bji is the status bit i of the DTCj and SAMi is bit i of the Status availability
mask indicating the status bits supported by the ECU for all the DTCs; if result is different from ‘0’ then
the corresponding DTC matches the request criteria.
DTC status information shall be cleared upon a successful ClearDiagnosticInformation request from
the tool (see DTC status bit definitions in table below for further descriptions on the DTC status bit
handling in case of a ClearDiagnosticInformation service request reception in the ECU).
The monitoring cycle has been replaced in UDS by the concept of Operation cycle defined below :
Operation Cycle: An operation cycle defines the start and end conditions for monitors to run. During an
operation cycle several monitoring cycles may have passed (regardless of their test results). An ECU
may support several operation cycles. For body and chassis ECU's it is up to the manufacturer to
define an operation cycle (e.g. time between powering up and powering down the ECU or between
ignition on and ignition off). For powertrain ECU's, there are additional criteria defining an operation
cycle. Emissions-related powertrain ECU's use an engine-running or engine-off time period to define
an operation cycle which is referred to as driving cycle
OBD Non
bit Description OBD Mnem
Cvt Cvt
TestFailed
This bit shall indicate the result of the most recently performed test.
A logical ‘1’ shall indicate that the last test failed. Reset to logical '0'
0 if the result of the most recently performed test returns a “pass” U C1 TF
result.
Reset to logical '0' if a call has been made to
ClearDiagnosticInformation.
OBD Non
bit Description OBD Mnem
Cvt Cvt
TestFailedThisOperationCycle
This bit shall indicate whether or not a diagnostic test has reported a
TestFailed result at any time during the current Operation cycle (or
that a TestFailed result has been reported during the current
Operation cycle and after the last time a call was made to
1 ClearDiagnosticInformation). Reset to logical '0' when a new M C1 TFTMC
Operation cycle is initiated.
If this bit is set to logical '1', it shall remain a '1' until a new
monitoring cycle is started.
Reset to a logical ‘0’ after a call to ClearDiagnosticInformation.
pendingDTC
This bit shall indicate whether or not a diagnostic test has reported a
testFailed result at any time during the current or last completed
Operation cycle. The status shall only be updated if the test runs and
completes. The criteria to set the pendingDTC bit and the
TestFailedThisOperationCycle bit are the same. The difference is
2 that the testFailedThisOperationCycle is cleared at the end of the M U PDTC
current Operation cycle and the pendingDTC bit is not cleared until
an Operation cycle has completed where the test has passed at
least once and never failed.
If the test did not complete during the current Operation cycle, the
status bit shall not be changed.
Reset to a logical ‘0’ after a call to ClearDiagnosticInformation.
OBD Non
bit Description OBD Mnem
Cvt Cvt
confirmedDTC
This bit shall indicate whether a malfunction was detected enough
times to warrant that the DTC is stored in long-term memory
(pendingDTC has been set = '1' one or more times, depending on
the DTC confirmation criteria).
A confirmedDTC does not always indicate that the malfunction is
necessarily present at the time of the request. (pendingDTC or
3 testFailedThisOperationCycle can be used to determine if a M M CDTC
malfunction is present at the time of the request.).
Reset to logical '0' after a call to ClearDiagnosticInformation or after
aging criteria has been satisfied (e.g., 40 engine warm-ups without
another detected malfunction).
DTC confirmation and aging criteria are defined by the function
manager or mandated by On Board Diagnostic regulations.
Reset to a logical ‘0’ after a call to ClearDiagnosticInformation.
testNotCompletedSinceLastClear
This bit shall indicate whether a DTC test has ever run and
completed since the last time a call was made to
ClearDiagnosticInformation. One ('1') shall indicate that the DTC test
4 C2 C2 TNCSLC
has not run to completion. If the test runs and passes or if the test
runs and fails (testFailedThisOperationCycle = '1') then the bit shall
be set to a '0' (and latched).
Reset to a logical ‘1’ after a call to ClearDiagnosticInformation.
testFailedSinceLastClear
This bit shall indicate whether a DTC test has ever returned a
testFailedThisOperationCycle = '1' result since the last time a call
was made to ClearDiagnosticInformation (latched
5 testFailedThisOperationCycle = '1'). C2 C2 TFSLC
Zero ('0') shall indicate that the test has not run or that the DTC test
ran and passed (but never failed). If the test runs and fails then the
bit shall remain latched at a '1'.
Reset to a logical ‘0’ after a call to ClearDiagnosticInformation.
testNotCompletedThisOperationCycle
This bit shall indicate whether a DTC test has ever run and
completed during the current Operation cycle (or completed during
the current Operation cycle after the last time a call was made to
ClearDiagnosticInformation).
6 M U TNCTMC
A logical '1' shall indicate that the DTC test has not run to completion
during the current Operation cycle. If the test runs and passes or
fails then the bit shall be set (and latched) to '0' until a new
Operationcycle is started.
Reset to a logical ‘1’ after a call to ClearDiagnosticInformation.
OBD Non
bit Description OBD Mnem
Cvt Cvt
warningIndicatorRequested
This bit shall report the status of any warning indicators associated
with a particular DTC. Warning outputs may consist of indicator
lamp(s), displayed text information, etc. If no warning indicators exist
for a given system or particular DTC, this status shall default to a
logic '0' state.
7 M U WIR
Conditions for activating the warning indicator shall be defined by the
function manager / implementation, but if the warning indicator is on
for a given DTC, then confirmedDTC shall also be set to '1'.
Reset to a logical ‘0’ after a call to ClearDiagnosticInformation.
Additional reset conditions shall be defined by the function manager
/ implementation.
C1: Bit 1 (testFailedThisOperationCycle) is Mandatory if bit 2 (pendingDTC) is supported.
Bit 1 (testFailedThisOperationCycle) is FREE if bit 2 (pendingDTC) is not supported.
At least one bit is Mandatory among bit 0 and bit 1
C2: Bit 4 (testNotCompletedSinceLastClear) and bit 5 (testFailedSinceLastClear) shall always be
supported together
DTCRecord
3-byte value containing DTCHighByte, DTCMiddleByte and DTCLowByte as defined in ISO 15031-6..
Depending on the application, two configurations are possible.
Case 1 : DTC low byte set to $00, mainly applicable in older powertrain applications
DTCHighByte and DTCMiddleByte represents a 2 bytes DTC as specified in ISO 15031-6 figure 9.
Function manager shall specify for each value of such defined DTC the associated deviceIdentifier
and failureTypeByte.
The conversion table is maintained by Renault / Nissan responsible departments for diagnostic
services.
Case 2 : DTC Low byte different from $00 (recommended for new designs)
DTCSnapshotRecordNumber
1-byte value indicating the number of the specific DTCSnapshot data record requested for
a tool defined DTCMaskRecord via the reportDTCSnapshotByDTCNumber / sub-functions. For
emissions-related servers (OBD compliant ECUs) the DTCSnapshot data record number 00 hex shall
be the equivalent data record as specified in ISO 15031-5 service 02 hex frame number 00 hex. For
ECU that do support multiple DTCSnapshot data records for a single DTC, the tool shall set this to a
value ranging from $01 hex to the maximum number supported by the ECU (which may range up to
$FE hex, depending on the ECU). A value of $FF hex requests the ECU to report all stored
DTCSnapshot data records at once.
DTCExtendedDataRecordNumber
1-byte value indicating the number of the specific DTCExtendedData record requested for a tool
defined DTCMaskRecord via the reportDTCExtendedDataRecordByRecordNumber sub-function.. For
emissions-related servers (OBD compliant ECUs) the DTCExtendedDataRecordNumber 00 hex shall
be reserved for future OBD use. A DTCExtendedDataRecordNumber value in the range of 01 hex
through FE hex requests the server to report the stored DTCExtendedData record. A value of $FF
hex requests the ECU to report all stored DTCExtendedData records at once. All ECU should have the
function for receiving the value of $FF hex.
If mileage information is not avalable in the system, this Extended data is not supported by ECU.
AgingCounter
1 byte unsigned integer value. Maximum value is system dependant (refer to system specific diagnostic
specification for appropriate value). When maximum value is reached counter is frozen or the DTC is cleared
(system dependant, refer to system specific diagnostic specification for appropriate behaviour). This data is
available only when the “ConfirmedDTC” status bit is set to 1. Initial value is 0. Reset to 0 upon reception of a
ClearDiagnosticInformation service.
DTCOccurenceCounter
1 byte unsigned integer value. Maximum value is 255. When maximum value is reached counter is frozen.
When supported, this data is always available. Initial value is 0. Reset to 0 upon reception of a
ClearDiagnosticInformation service.
9.4.2.4.1.Service Description
A tool can retrieve a count of the number of DTC's matching a tool defined status mask by sending a
request for this service with the sub-function set to reportNumberOfDTCByStatusMask. The response
to this request contains the DTCStatusAvailabilityMask, which provides an indication of DTC status
bits that are supported by the ECU for masking purposes.
The DTC mirror memory is an additional optional error memory in the ECU that cannot be erased by
the ClearDiagnosticInformation (14 hex) service. The DTC mirror memory mirrors the normal DTC
memory and can be used for example if the normal error memory is erased. Use of mirror memory is
system dependant; refer to sytem specific diagnostic specification to determine whether a mirror
memory is required.
9.4.2.4.2.Request message
9.4.2.5.1.Service Description
The tool can retrieve a list of DTC's, which satisfy a tool defined status mask.
The evaluation shall be done as follows: The ECU shall perform a bit-wise logical AND-ing operation
between the mask specified in the tool’s request and the actual status associated with each DTC
supported by the ECU. In addition to the DTCStatusAvailabilityMask, the ECU shall return all DTC’s
for which the result of the AND-ing operation is non-zero (i.e., (statusOfDTC & DTCStatusMask) != 0).
If the tool specifies a status mask that contains bits that the ECU does not support, then the ECU shall
process the DTC information using only the bits that it does support. If no DTC's within the ECU match
the masking criteria specified in the tool’s request, no DTC or status information shall be provided
following the DTCStatusAvailabilityMask byte in the positive response message.
9.4.2.5.2.Request message
9.4.2.6.1.Service Description
A tool can retrieve DTCSnapshot record identification information for all captured DTCSnapshot
records by sending a request for this service with the sub-function set to
reportDTCSnapshotIdentification. The ECU shall return the list of DTCSnapshot record identification
information for all stored DTCSnapshot records. Each item the ECU places in the response message
for a single DTCSnapshot record shall contain a DTCRecord (containing the DTC number (high,
middle, and low byte)) and the DTCSnapshot record number. In case multiple DTCSnapshot records
are stored for a single DTC then the ECU shall place one item in the response for each occurrence,
using a different DTCSnapshot record number for each occurrence (used for the later retrieval of the
record data).
NOTE: ECU may support the storage of multiple DTCSnapshot records for a single DTC to track
conditions present at each occurrence of the DTC. Support of this functionality, definition of
“occurrence” criteria, and the number of DTCSnapshot records to be supported shall be
defined by the function manager.
9.4.2.6.2.Request message
9.4.2.7.1.Service Description
A tool can retrieve captured DTCSnapshot record data for either a tool defined DTCMaskRecord in
conjunction with a DTCSnapshot record number by sending a request for this service with the sub-
function set to reportDTCSnapshotRecordByDTCNumber.
If the ECU supports the ability to store multiple DTCSnapshot records for a single DTC (support of this
functionality to be defined by the function manager), then it is recommended that the ECU also
implement the reportDTCSnapshotRecordIdentification sub-function parameters.
The ECU shall report one DTCSnapshot record in a single response message, except if the tool has
set the DTCSnapshotRecordNumber to FF hex, because this shall cause the ECU to response with all
DTCSnapshot records stored for the tool defined DTCMaskRecord in a single response message.
9.4.2.7.2.Request message
9.4.2.8.1.Service Description
A tool can retrieve DTCExtendedData for a tool defined DTCMaskRecord in conjunction with a
DTCExtendedDatarecord number by sending a request for this service.
Along with the DTC number and statusOfDTC, the ECU shall return a single pre-defined
DTCExtendedData record in response to the tool’s request (DTCSnapshotRecordNumber unequal FF
hex).
9.4.2.8.2.Request message
9.4.2.9.1.Service Description
A tool can retrieve the status of all DTC's supported by the ECU by sending a request for this service
with the sub-function set to reportSupportedDTCs. The response to this request contains the
DTCStatusAvailabilityMask, which provides an indication of DTC status bits that are supported by the
ECU for masking purposes. Following the DTCStatusAvailabilityMask the response also contains the
listOfDTCAndStatusRecord, which contains the DTC number and associated status for every
diagnostic trouble code supported by the ECU.
9.4.2.9.2.Request message
9.4.2.10.1.Service Description
The tool can retrieve the first failed, most recent failed, first confirmed or most recent confirmed DTC
from the ECU by sending a request with the sub-function byte set to “reportFirstTestFailedDTC”,
“reportMostRecentTestFailedDTC”, “reportFirstConfirmedDTC” or “reportMostRecentConfirmed DTC”,
respectively. Along with the DTCStatusAvailabilityMask, the ECU shall return corresponding DTC and
associated status to the tool.
No DTC or status information shall be provided following the DTCStatusAvailabilityMask byte in the
positive response message if there were no failed / confirmed DTC's logged since the last time the tool
requested the ECU to clear diagnostic information. Also, if only 1 DTC became failed / confirmed since
the last time the tool requested the ECU to clear diagnostic information, the lone failed / confirmed
DTC shall be returned to both reportFirstTestFailedDTC and reportMostRecentTestFailedDTC
requests or both reportFirstConfirmedDTC and reportMostRecentConfirmedDTC requests from the
tool.
9.4.2.10.2.Request message
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 144.
Table 144 — Supported negative response codes
Hex Description Cvt Mnem
$12 subFunctionNotSupported M SFNS
This code shall be returned if:
1. The ECU does not support the requested DTCMaskRecord.
2. The ECU does not support the requested
DTCSnapshotRecordNumber / DTCExtendedDataRecordNumber
3. The ECU does not support the requested sub-function
4. The length of the request message is wrong.
$22 conditionsNotCorrect U CNC
This code shall be returned if the operating conditions of the ECU are not
met to perform the ReadDTCInformation service.
$33 SecurityAccessDenied M SAD
This code shall be sent if the ReadDTCInformation requires an unlocked
ECU (for sub-functions $0F to $11 only)
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
This service is used to substitute a value for an input signal or internal ECU function, it is used also to
control an ECU output (actuator). The entity control is according to a control cycle predefined in the
ECU.
A temporary control is a control which ends on its own. The control parameters are fixed and defined
in conjunction with the customers of this type of function (after-sales, assembly line process test, etc.)
and the supplier by the function manager. A temporary control may nevertheless be stopped before its
completion by the Stop control command from the tool.
There is a permanent control as opposed to a temporary control. The permanent control normally
requires a stop control from the tool.
In any case, if there is a risk of damaging the actuator by a too long permanent control, the ECU shall
be able to stop the control by itself.
The function manager defines the necessary security conditions enabling the system to allow a control
request. If the request is not allowed, a negative reply with NRC $22 - for applicative conditions not
met - or $33 – for control protected by securityAccess service - shall be sent by the ECU.
The ECU shall send a positive response message if the request message was successfully executed.
The positive response message shall include controlStatus information which is available during or
after the control execution.
For each control, the following items shall be detailed in the system specific diagnostic specification:
- Control duration,
- ECU behavior after a stop requested by the tool or upon emergency exit conditions.
The Local Identifiers from range [$01 - $7F] supported by ECU can be retrieved by reserved LIDs $00,
$20, $40 and $60 as defined in §.9.1.5.
OptionalParameter
The parameters are defined by the function manager to manipulate the ECU input or output signal.
$12 – $F9 Control aborted due to internal error, defined by function manager in the U
system specific diagnostic
$FA –$FE Supplier specific affectation U
$FF Not allowed : Reserved by the document F
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 152.
Table 152 — Supported negative response codes
Hex Description Cvt Mnem
$12 SubFunctionNotSupported-InvalidFormat M SFNS
This code shall be returned if:
1. The requested inputOutputLocalIdentievalue is not supported,
2. The requested controlOption is not supported / invalid.
3. The length of the message is wrong
$22 conditionsNotCorrect M CNC
This code shall be returned if the criteria for the request InputOutputControl are
not met.
If the ECU cannot support another LocalID’s I/O control service during I/O
control processing, the ECU should return negative response message with this
negative response code. Restriction on use of simultaneous Local ID’s I/O
control shall be detailed in the system specific diagnostic specification.
$33 securityAccessDenied M SAD
This code shall be returned if a tool sends a request with ControlOption
parameter equal to “start permanent/temporary control”and valid secure
IOLocalIdentifier and the ECU is locked.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time service is in progress,
see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
$7F ServiceNotSupportedInActiveSession M SNSIAS
See § 9.1.1.2.
Start control
Stop
ro l
Sess
Ses
*1
ont
Em
cont
ted
sion
ion c
rt c
erg
ues
rol re
Sta
enc
time
hang
req
ques
y ex
out
trol
ed b
it
con
ted
y SD
*1
p
Sto
S
The ECU shall set current status to $01 when the request message with Start Control was
successfully executed then send a positive response message with CTRLSTAT1 = current status. The
ECU shall send a positive response message with CTRLSTAT1 = current status when subsequent
request messages with status request are received.
If a request with stop control is received and ECU supports stop control, the ECU shall stop the control
when the current status is $01 and change the current status to $11 then send a positive response
message with CTRLSTAT1 = current status.
9.5.1.6.1.Start Control
The ECU should send a positive response message when the control is started which shall occur
before P2CAN_SERVER.
P2 Timeout
9.5.1.6.2.Status request
The ECU shall send a response message immediately when ECU is processing the request.
9.5.1.6.3.Stop request
The ECU shall send a response message when the control has been completely stopped.
This service has to be used when accurate timing control precision are required (not possible to be
controlled by a tool) or sequence complexity needs dedicated software module for control and results
storage (example: teach-ins).
After receiving the request the ECU shall start the specified routine. Then a positive response shall be
sent with the status “in progress” ($01). If the routine can not be started the ECU shall send a negative
reply with NRC $22 - for applicative conditions not met - or $33 – for routine control protected by
securityAccess service.
The Local Identifiers from range [$01 - $7F] supported by ECU can be retrieved by reserved LIDs $00,
$20, $40 and $60 as defined in §.9.1.5.
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 160.
Table 160 — Supported negative response codes
Hex Description Cvt Mnem
$12 subFunctionNotSupported-InvalidFormat M SFNS
This code shall be returned if:
1. The ECU does not support the requested RoutineLocalIdentifier,
2. The user optional routineEntryOption contains invalid data for the
requested StartRoutineByLocalIdentifier.
3. The length of the message is wrong
$22 conditionsNotCorrect M CNC
This code shall be returned if the criteria for the request
StartRoutineByLocalIdentifier are not met.
For example if a specific RoutineLocalIdentifier requires a non default
session and the current session is default session.
$33 securityAccessDenied M SAD
This code shall be returned if a tool sends a request with RoutineEntryOption
parameter equal to “Perform routine requested” and valid secure
RoutineLocalIdentifier and the ECU is locked.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time services is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
$7F ServiceNotSupportedInActiveSession U SNSIAS
See § 9.1.1.2.
OK
ot
dn
Stop routine is requested
an
ted
le
mp
d
te
co
es
qu
ne
re
u ti
e
in
Ro
ut
ro
rm
rfo
Pe
Routine Completed
and not OK
Status: $03 - $FF
ECU handling
Request message
Stop routine is requested
Before a routine has ever been started in an operation cycle, the status is $02 “routine complete and
ok”, i.e.If a status request is received before the routine was started in the operation cycle, the returned
status shall be 0x02.
Fig. 14 — Start Routine Management
The ECU shall set current status to $01 when the request message with “Perform Routine requested”
was successfully executed then send a positive response message with RENTSTAT1 = current status.
The ECU shall send a positive response message with RENTSTAT1 = current status when
subsequent request messages with status request are received.
The ECU should send a positive response message when the routine is started which shall occur
before P2CAN_SERVER.
P2CAN_SERVER Timeout
9.6.1.6.2.Status request
The ECU shall send a response message immediately when ECU is processing the request.
This service is used to stop the routine referenced by a routineLocalIdentifier that was activated by the
StartRoutineByLocalIdentifier service. The routine shall be stopped before the positive response
message is sent.
The use of “Local Identifiers” from range [$01 - $7F] is defined §.9.1.5.
Definition
routineLocalIdentifier
The parameter identifies an ECU local routine.
RoutineExitParameters
Exit parameters to be defined by Function manager
The following negative response codes shall be implemented for this service. The circumstances
under which each response code would occur are documented in Table 167.
Table 167 — Supported negative response codes
Hex Description Cvt Mnem
$12 subFunctionNotSupported-InvalidFormat M SFNS
This code shall be returned if:
1. The ECU does not support the requested RoutineLocalIdentifier,
2. The user optional routineExitOption contains invalid data for the
requested StopRoutineByLocalIdentifier.
$22 conditionsNotCorrect M CNC
This code shall be returned if the criteria for the request
StopRoutineByLocalIdentifier are not met.
$21 Busy-RepeatRequest M BRR
This NRC is applicable only when a long execution time service is in
progress, see § 9.1.2.2.
$23 RoutineNotComplete M RNC
This NRC is applicable only to long execution time services, see § 9.1.2.2.
$7F ServiceNotSupportedInActiveSession U SNSIAS
See § 9.1.1.2.
When a Stop routine service is received, the ECU shall stop the routine when the current status is $01
and change the current status to $02 then send a positive response message with REXSTAT1 =
current status.
The ECU shall send a response message when the routine has been completely stopped.
Caution: These services are only applicable in BOOT software. There shall not be implemented in
any application software.
This service is used during reprogramming for the data transfer (see applicable Reprogramming
specification [REF 2]).
This service is used during reprogramming for the data checking after a download (see applicable
Reprogramming specification [REF 2]).
ANNEXE A
DATA TRANSMISSION FUNCTIONAL UNIT DATA PARAMETER DEFINITIONS
Hex Description
$0100 – $EFFF System specific allocation
$xx00, $xx20, …, $xxE0 where xx is in range [$01, $EF] Indicate values used in the
ranges $xx01-xx20, $xx21-xx40, …, $xxE1-xxFF. If $xxy0, where y is any even value
in range [0, E], is not supported, the whole range [$xxy0, $xxyF] is not supported.
Other values are System specific.
$FD00 - $FEFF Supplier specific data
$0000 - $00FF Reserved by ISO/SAE
$F000 - $FFFF
ANNEXE A (continued)
The parameter dataIdentifier (DID) is to identify an ECU specific local data record. This parameter
shall be available in the ECU's memory. The dataIdentifier value shall either exist in fixed memory or
temporarily stored in RAM if defined dynamically by the service dynamicallyDefineDataIdentifier.
Values are defined in Table 177 - dataIdentifier data parameter definitions
ANNEXE A (continued)
ANNEXE A (continued)
ANNEXE A (continued)
ANNEXE A (continued)
Annex B
Timing chart for DTC
2
TripCounter
1
0
0
T1 T2 T3 T4 T5 T6 T7 T8 T9
Time