Click here for back issues.
https://www.simulationroom999.com/blog/diagnostic-communication-en-back-issue/
Introduction.
Explanation of ISO 14229, UDS.
In this article, the messages of the TesterPresent service will be explained.
Request message for TesterPresent service
Let’s take a look at the TesterPresent service message.
Position | Parameter Name | Value |
---|---|---|
1 | TesterPresent Request SID | 0x3E |
2 | sub-function = [ zeroSubFunction ] | 0x00,0x80 |
You may have noticed that there are only two sub-functions, 0x00 and 0x80.
As for 0x80, this number is not important, but the most significant bit is important.
The most significant bit of this sub-function is called the suppressPosRspMsgIndicationBit.
suppressPosRspMsgIndicationBit
The suppressPosRspMsgIndicationBit is not a specification limited to TesterPresent service.
It is applicable to all services that have sub-function parameters.
The effect is to suppress PositiveResponse responses.
It is located at the most significant bit of sub-function, so it is ORed with the normal sub-function and 0x80.
Why does PositiveResponse response suppression exist?
With the TesterPresent service, for example, it is rather straightforward and is used to notify that “ECUs that receive this do not have to respond”.
The TesterPresent service itself does not require any particular processing, and is often used only to maintain S3 time.
For example, if there are 8 ECUs in a CAN network and you send a TesterPresent with a functional address, what do you think will happen?
All ECUs would respond.
In contrast, what happens if the suppressPosRspMsgIndicationBit is standing?
All ECUs will not respond.
Considering only the extension of S3 time, it is more efficient to have a functional address and a suppressPosRspMsgIndicationBit.
Incidentally, even if the suppressPosRspMsgIndicationBit is set, NRC$78 is returned.
If NRC$78 is returned, PositiveResponse is also returned even if suppressPosRspMsgIndicationBit is set.
This is the specification.
If NRC$78 is returned once, it will be handled as a timeout if PositiveResponse is not returned, so it is necessary to return PositiveResponse in this case.
Response message for TesterPresent service
The response message is as follows.
Position | Parameter Name | Value |
---|---|---|
1 | TesterPresent Response SID | 0x7E |
2 | sub-function = [ zeroSubFunction ] | 0x00 |
This could have been expected, couldn’t it?
There is no possible response in sub-function 0x80.
The sub-function of 0x80 is the case of “suppressPosRspMsgIndicationBit”, and in the case of TesterPresent, it is assumed that there is no NegativeResponse.
This explanation should be enough for TesterPresent service.
Conclusion
- Explanation of the messages of the TesterPresent service.
- Explanation of suppressPosRspMsgIndicationBit.
- PositiveResponse suppression.
- NegativeResponse is returned.
- PositiveResponse after NRC$78 is also returned.
Click here for back issues.
コメント