MODBUS Exception Responses

When a client device sends a request to a server device it expects a normal response. One of four possible events can occur from the client’s query:

  • If the server device receives the request without a communication error, and can handle the query normally, it returns a normal response.
  • If the server does not receive the request due to a communication error, no response is returned. The client program will eventually process a timeout condition for the request.
  • If the server receives the request, but detects a communication error (parity, LRC, CRC, ...), no response is returned. The client program will eventually process a timeout condition for the request.
  • If the server receives the request without a communication error, but cannot handle it (for example, if the request is to read a non –existent output or register), the server will return an exception response informing the client of the nature of the error.
The exception response message has two fields that differentiate it from a nor mal response:

  • Function Code Field: In a normal response, the server echoes the function code of the original request in the function code field of the response. All function codes have a most – significant bit (MSB) of 0 (their values are all below 80 hexad ecimal). In an exception response, the server sets the MSB of the function code to 1. This makes the function code value in an exception response exactly 80 hexadecimal higher than the value would be for a normal response.With the function code’s MSB set, the client's application program can recognize the exception response and can examine the data field for the exception code.
  • Data Field: In a normal response, the server may return data or statistics in the data field (any information that was requested in the request). In an exception response, the server returns an exception code in the data field. This defines the server condition that caused the exception.

MODBUS Exception Codes