Exception Responses
Following a request, there are 4 possible outcomes from the slave.
1. The request is successfully processed by the slave and
a valid response is sent.
2. The request is not received by the slave therefore no
response is sent.
3. The request is received by the slave with a parity, CRC or
LRC error.
The slave ignores the request and sends no
response.
4. The request is received without an error, but cannot be
processed by the slave for another reason. The slave replies with
an exception response.
In a normal response, the slave echoes the function code. The
first sign of an exception response is that the function code is shown
in the echo with its highest bit set. All function codes have
0 for their most significant bit. Therefore, setting this
bit to 1 is the signal
that the slave cannot process the request.
Function Code in Request |
Function Code in Exception Response |
01 (01
hex) 0000
0001 |
129 (81
hex) 1000
0001 |
02 (02
hex) 0000
0010 |
130 (82
hex) 1000
0010 |
03 (03
hex) 0000
0011 |
131 (83
hex) 1000
0011 |
04 (04
hex) 0000
0100 |
132 (84
hex) 1000
0100 |
05 (05
hex) 0000
0101 |
133 (85
hex) 1000
0101 |
06 (06
hex) 0000
0110 |
134 (86
hex) 1000
0110 |
15 (0F
hex) 0000 1111 |
143 (8F
hex) 1000 1111 |
16 (10
hex) 0001
0000 |
144 (90
hex) 1001
0000 |
Here is an example of a request with an Exception Response:
Request
This command is requesting the ON/OFF status of discrete coil #1186 from the slave
device with address 10.
0A 01 04A1 0001 AC63
0A: The Slave Address
(0A hex = address10 )
01: The Function Code 1 (read Coil Status)
04A1: The Data Address
of the first coil to read
(
04A1 hex = 1185 , + 1
offset = coil #1186 )
0001: The total number
of coils requested.
AC63: The CRC (cyclic redundancy check) for error checking.
Response
0A 81 02 B053
0A: The Slave Address
(0A hex = address10 )
81: The Function Code 1 (read Coil Status
- with the highest bit set)
02: The Exception Code
B053: The CRC (cyclic redundancy check).
Following the Function Code is the Exception Code. The
exception code gives an indication of the nature of the problem. The
possible codes are
shown in the table below.
The exception code shown above
02 is an indication that
coil #1186 is an illegal address in the slave. This coil has not
been defined in the slave's modbus map.
The exception
codes as explained in the Modbus specification are:
Exception Code |
Name |
Meaning |
01 (01
hex) |
Illegal Function |
The function code received in the query is
not an allowable action for the slave. This
may be because the function code is only applicable to newer
devices, and was not implemented in the unit selected. It
could also indicate that the slave is in the wrong
state to process a request of this type, for example because it
is unconfigured and is being asked to return register values. If
a Poll Program Complete command was issued, this code indicates
that no program function preceded it. |
02 (02
hex) |
Illegal Data Address |
The data address received in the query is not
an allowable address for the slave. More
specifically, the combination of reference number and transfer
length is invalid. For a controller with 100 registers, a
request with offset 96 and length 4 would succeed, a request
with offset 96 and length 5 will generate exception 02. |
03 (03
hex) |
Illegal Data Value |
A value contained in the query data field is
not an allowable value for the slave. This
indicates a fault in the structure of remainder of a complex
request, such as that the implied length is incorrect. It
specifically does NOT mean that a data item submitted for storage
in a register has a value outside the expectation of the
application program, since the MODBUS protocol is unaware of the
significance of any particular value of any particular register. |
04 (04
hex) |
Slave Device Failure |
An unrecoverable error occurred while the
slave was attempting to perform the requested
action. |
05 (05
hex) |
Acknowledge |
Specialized use in conjunction with
programming commands. The slave has accepted the
request and is processing it, but a long duration of time will
be required to do so. This response is returned to prevent
a timeout error from occurring in the master. The master can next issue a Poll Program Complete
message to determine if processing is completed. |
06 (06
hex) |
Slave Device Busy |
Specialized use in conjunction with
programming commands. The slave is engaged in
processing a long-duration program command. The master should retransmit the message later when the
slave is free.. |
07 (07
hex) |
Negative Acknowledge |
The slave cannot perform the program function
received in the query. This code is returned for an unsuccessful
programming request using function code 13 or 14 decimal. The
master should request diagnostic or error information from the
slave. |
08 (08
hex) |
Memory Parity Error |
Specialized use in conjunction with function
codes 20 and 21 and reference type 6, to indicate that the
extended file area failed to pass a consistency check.
The slave attempted to read extended memory or record file, but
detected a parity error in memory. The master can
retry the request, but service may be required on the slave device. |
10 (0A
hex) |
Gateway Path Unavailable |
Specialized use in conjunction with gateways,
indicates that the gateway was unable to allocate an internal
communication path from the input port to the output port for
processing the request. Usually means the gateway is
misconfigured or overloaded. |
11 (0B
hex) |
Gateway Target Device Failed to Respond |
Specialized use in conjunction with gateways,
indicates that no response was obtained from the target device.
Usually means that the device is not present on the network. |
Home •
FAQ •
Enron •
Download •
Purchase •
Contact
Copyright © 2020 Simply Modbus. All rights reserved
|