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.