Modbus Exception Code 01: Illegal Function

TROUBLESHOOTINGUpdated Feb 20268 min read

Exception Code 01 means your slave device received your request, understood the addressing, but does not support the function code you sent. The good news: communication is working. The bad news: you're speaking the wrong dialect.

💡 The Silver Lining

Getting an exception response actually means your physical layer, slave address, and communication parameters are all correct. You're 90% of the way there.

What Exception Code 01 Means

When a Modbus slave receives a request with a function code it doesn't recognise or doesn't implement, it responds with the original function code OR'd with 0x80 (setting the high bit), followed by exception code 0x01. For example, if you sent FC06 (Write Single Register) and the device only supports FC03/FC04 for reading, you'll get back function code 0x86 with exception 0x01.

Common Causes

1. Using FC03 when the device expects FC04 (or vice versa)

This is the most common cause. FC03 reads Holding Registers, FC04 reads Input Registers. Some devices implement their measurement data on FC04 only, while others use FC03. The register map document will specify which function code to use — but engineers often assume FC03 without checking.

2. Trying to write to a read-only device

Many Modbus slaves (especially sensors and meters) only implement read function codes. Sending FC06 (Write Single Register) or FC16 (Write Multiple Registers) will trigger exception 01.

3. Device has limited Modbus implementation

Some cheap or older devices only implement a subset of Modbus function codes. They may only respond to FC03 with specific register ranges and reject everything else.

4. Modbus ASCII vs RTU mismatch

If your master sends Modbus ASCII frames to an RTU-only device, the device may partially decode the frame and reject the "function code" it finds (which is actually part of the ASCII encoding, not a real function code).

How to Fix It

Check the device's Modbus documentation for which function codes are supported. If you were using FC03, try FC04. If you were trying to write, confirm the device supports write operations. If the documentation isn't clear, try each common function code (01, 02, 03, 04) with a simple read of register 0 and see which ones respond without exceptions.

🗂 Built-in Maps

Correct function codes, every time

ModBus Pro includes 80+ built-in device register maps with the correct function codes already configured. No guessing which function code to use for each register.

Download Free

Quick Function Code Reference

The most commonly used Modbus function codes in industrial applications: