@@ -82,8 +82,8 @@ Modbus provides access to the following 4 types of data:
8282Modbus communications
8383~~~~~~~~~~~~~~~~~~~~~
8484
85- Modbus communication consists of a *request message * sent from the
86- *Modbus client * to the *Modbus server * . The server replies with a
85+ Modbus communication consists of a *request message * sent from a
86+ *Modbus master * (client) to a *Modbus slave * (server) . The server replies with a
8787*response message *. Modbus request messages contain:
8888
8989- An 8-bit Modbus function code that describes the type of data
@@ -236,6 +236,82 @@ Modbus read operations are limited to transferring 125 16-bit words or
2362362000 bits. Modbus write operations are limited to transferring 123
23723716-bit words or 1968 bits.
238238
239+ Modbus exceptions
240+ ~~~~~~~~~~~~~~~~~
241+
242+ If a Modbus requests is determined to be invalid by the server, it returns
243+ a Modbus exception message.
244+ The modbus driver will print an error message if an exception is returned.
245+ The following table describes the possible Modbus exceptions.
246+
247+ Modbus exception codes
248+ ______________________
249+
250+ .. cssclass :: table-bordered table-striped table-hover
251+ .. list-table ::
252+ :header-rows: 1
253+ :widths: auto
254+
255+ * - Exception code
256+ - Name
257+ - Meaning
258+ * - 0x01
259+ - Illegal Function
260+ - The function code received in the query is not an allowable action for the slave.
261+ This may be because the function code is only applicable to newer devices,
262+ and was not implemented in the unit selected.
263+ It could also indicate that the slave is in the wrong state to process a request of this type,
264+ for example because it is unconfigured and is being asked to return register values.
265+ * - 0x02
266+ - Illegal Data Address
267+ - The data address received in the query is not an allowable address for the slave.
268+ More specifically, the combination of reference number and transfer length is invalid.
269+ For a controller with 100 registers, a request with offset 96 and length 4 would succeed,
270+ a request with offset 96 and length 5 will generate exception 02.
271+ * - 0x03
272+ - Illegal Data Value
273+ - A value contained in the query data field is not an allowable value for the slave.
274+ This indicates a fault in the structure of remainder of a complex request,
275+ such as that the implied length is incorrect.
276+ It specifically does NOT mean that a data item submitted for storage in a register has a value
277+ outside the expectation of the application program, since the MODBUS protocol is unaware of the
278+ significance of any particular value of any particular register.
279+ * - 0x04
280+ - Slave Device Failure
281+ - An unrecoverable error occurred while the slave was attempting to perform the requested action.
282+ * - 0x05
283+ - Acknowledge
284+ - Specialized use in conjunction with programming commands.
285+ The slave has accepted the request and is processing it, but a long duration of time will be required to do so.
286+ This response is returned to prevent a timeout error from occurring in the master.
287+ The master can next issue a Poll Program Complete message to determine if processing is completed.
288+ NOTE: The EPICS Modbus driver does not print an error message for this response, since it is not really an error.
289+ * - 0x06
290+ - Slave Device Busy
291+ - Specialized use in conjunction with programming commands.
292+ The slave is engaged in processing a long-duration program command.
293+ The master should retransmit the message later when the slave is free.
294+ * - 0x07
295+ - Negative Acknowledge
296+ - The slave cannot perform the program function received in the query.
297+ This code is returned for an unsuccessful programming request using function code 13 or 14 decimal.
298+ The master should request diagnostic or error information from the slave.
299+ * - 0x08
300+ - Memory Parity Error
301+ - Specialized use in conjunction with function codes 20 and 21 and reference type 6,
302+ to indicate that the extended file area failed to pass a consistency check.
303+ The slave attempted to read extended memory or record file, but detected a parity error in memory.
304+ The master can retry the request, but service may be required on the slave device.
305+ * - 0x0A
306+ - Gateway Path Unavailable
307+ - Specialized use in conjunction with gateways, indicates that the gateway was unable to allocate an
308+ internal communication path from the input port to the output port for processing the request.
309+ Usually means the gateway is misconfigured or overloaded.
310+ * - 0x0B
311+ - Gateway Target Device Failed to Respond
312+ - Specialized use in conjunction with gateways, indicates that no response was obtained from the target device.
313+ Usually means that the device is not present on the network.
314+
239315More information on Modbus
240316~~~~~~~~~~~~~~~~~~~~~~~~~~
241317
0 commit comments