[DoCAN] Vehicle Diagnostic Communication Part 49 [UDS 10]

[DoCAN] Vehicle Diagnostic Communication Part 49 [UDS 10] 車両診断通信
[DoCAN] Vehicle Diagnostic Communication Part 49 [UDS 10]

Click here for back issues.


Explanation of ISO 14229, UDS.
I will explain PositiveResponse and NegativeResponse.

PositiveResponse and NegativeResponse

As I will explain a little in the last issue, UDS has the following types of responses.

  • PositiveResponse
  • NegativeResponse

I will explain these.


I will first explain PositiveResponse.
This is nothing special and refers to a normal response.

You may not understand if I suddenly say “normal response”…

As I said last time, the following rules apply.

  • The first byte of the response message must be the Response SID.
  • The Response SID is set to the Request SID with 0x40 ORed.

Last time, the Request SID was 0x10, so it was ORed with 0x40 and set to 0x50.

This is the PositiveResponse.
Strictly speaking, each service defines its own required response parameters, but this is the only common rule.


I will explain the NegativeResponse here.
The message structure is as follows.

PositionParameter NameValue
1Negative Response SID0x7F
2<Service Name> Request SID0x00 – 0xFF
3responseCode0x00 – 0xFF

The first Negative Response SID is fixed at 0x7F.

One concern arises here.
The PositiveResponse rule states that the Response SID is the SID ORed with 0x40.
If there is a Service$3F, ORing with 0x40 results in 0x7F, which conflicts with the definition of Negative Response SID

Don’t worry.
There is no 0x3F service.
ISO 14229-1 specifies so.

Request SID, for example, in the case of 0x10, which I will explain in the previous section, is also 0x10 here.

There are many types of responseCode at the end.
Here are some typical ones.

0x12sub-functionNotSupportedUnsupported sub-function requested.
0x13incorrectMessageLengthOrInvalidFormatRequest message length is wrong.
0x22conditionsNotCorrectConditions are not correct.
0x31requestOutOfRangeParameters are out of the expected range.
0x33securityAccessDeniedSecurity lock is applied.
0x78requestCorrectlyReceived-ResponsePendingResponse pending, wait for P2* time.

The space between each number is empty, but in reality, the space is filled with more numbers.
Not all the numbers are filled.

Here is a simple example of a message.
In Service$10, if sub-function is not supported, the NegativeResponse will be as follows.

0x7F 0x10 0x12

requestCorrectlyReceived-ResponsePending becomes a NegativeResponse associated with the previous P2* time.
I will explain this in the next section.


  • Explanation of PositiveResponse.
    • Response SID is set to Request SID with 0x40 and OR.
  • Explanation of NegativeResponse.
    • Like 0x7F 0x10 0x12.
    • Special ones like ResponsePending will be explained next time.

Click here for back issues.