Thursday 11 August 2016

Do we always get response for UDS request?

When we send a UDS request from a client to server, we do not get the response always. The response can be either positive or negative.

Let us consider a simple single frame unsegmented request on CAN protocol.

  • In unsegmented request first byte will be always Data length in the request, followed by Service ID which is the second byte, then followed byte will be sub-function or service request related parameter bases on service ID.
  • If we set the MSB bit of the third byte to "1" which means "Suppress response", then we do not get the positive response for the request.
  • If we set the MSB bit of the third byte to "0", then the client is allowed to send response depending on response type.
  • If the response is positive, then the client will send the response to the server.
  • If the response is negative, then the client will send the response to the server only if it is a physical request. For functional requests client may send the negative responses to the server or may not.

The client may send response to the server before changing its state or after changing its state.
For example If we request programming request to client then client will change its state from Normal mode to Programming session mode. When it enters to Programming session, it sends response.
The response data contains timing parameters of the session. Server applications usually do not know about Programming session timing parameters which lies in Boot software. So it is the responsibility of boot software to send the response for programming request to the client.

No comments:

Post a Comment