OMRON E5EC Modbus TCP: Configuring Auto/Manual Mode and Register Access
The OMRON E5EC digital temperature controller supports Modbus TCP on its built-in Ethernet port. Engineers integrating the E5EC into SCADA, PLC, or HMI systems frequently encounter confusion around two distinct mechanisms for changing Auto/Manual state: the holding register bit at address 0x300F and the Operation Command Code 09 (0x0009). This reference explains the register architecture, the difference between a "variable" and a "command," the supported Modbus function codes, and the exact message structure required to force Manual mode and write a manual Manipulated Variable (MV).
1. Prerequisites
- E5EC controller with the Modbus TCP option board (E5EC-8xx series; verify catalog suffix such as E5EC-RX4A or E5EC-PR4A supports the Ethernet communications model). The standard E5EC product family is documented on the OMRON E5EC product page.
- Firmware version that exposes Modbus TCP. E5EC units with the communications option are functional out-of-the-box; no firmware upgrade is required for Modbus TCP, but always confirm the unit version on the controller's Initial Setting Level > Communications menu.
- OMRON E5EC Digital Temperature Controllers Communications Manual (Cat. No. H186-E1 series). Sections 4-4-1 through 4-4-3 cover Modbus frame construction, and Section 5 covers the variable area (register map).
- A Modbus TCP master tool for commissioning: ModScan32 (WinTech), Modbus Poll, or any open-source alternative that allows specifying the Function Code and data value directly.
- Ethernet connectivity to the controller (default IP 192.168.250.1 unless changed). The Ethernet option port uses TCP port 502.
2. E5EC Modbus Register Architecture
The E5EC presents a variable area (parameter storage) and an operation command area (control codes). The variable area uses Function Code 03 (Read Holding) and Function Code 06/16 (Write Holding). The operation command area is a write-only region that always uses Function Code 06, with a fixed register address of 0x0000 and a fixed data value encoding a command code + parameter.
2.1 Variable Area (Holding Registers)
| Register (hex) | Decimal | Name | Access | Notes |
|---|---|---|---|---|
| 0x0000 | 0 | Process Variable (PV) — 4-byte mode | R | Low-order 16 bits of signed 32-bit process value |
| 0x0001 | 1 | Process Variable (PV) — 4-byte mode | R | High-order 16 bits |
| 0x0104 | 260 | Set Point (SV) | R/W | Two-byte mode; signed int, divide-by-10 |
| 0x2600 | 9728 | Manual MV | R/W | Two-byte mode; −5.0 to 105.0 |
| 0x300F | 12303 | Auto/Manual Select Addition status | R | Reflects only the Add Auto/Manual Select parameter (Operation Mode); cannot be written from Modbus |
| 0x2E0A | 11786 | Event Input Assignment | R/W | Value 2 = Auto/Manual Switch (status of Event contact) |
| 0x3200 | 12800 | PF Setting | R/W | Value 7 binds the front-panel PF key to Auto/Manual toggle |
2.2 Operation Command Area (Write-Only)
| Register (hex) | Decimal | Function Code | Purpose |
|---|---|---|---|
| 0x0000 | 0 | FC 06 only | Write a structured command packet (Command Code + Related Data) |
Per the E5EC Communications Manual, Section 4-4-2: "For an operation command, specify 0000 or FFFF in the address field. The data field is the operation command code (first byte) and the related data (second byte)." This is why the variable-area write address 0x0000 and the operation-command target address are both 0x0000 — they are distinct channels selected by data pattern, not address.
3. Two Methods to Switch Auto/Manual
3.1 Method A — Operation Command Code 09 (Recommended)
This is the only documented means of switching Auto/Manual state from a Modbus master. It uses Function Code 06 (Write Single Register) targeted at register 0x0000 with a structured data word.
3.1.1 Data Field Encoding
| Byte 1 (High) | Byte 2 (Low) | Meaning |
|---|---|---|
| 0x09 | 0x00 | Command Code 09: Switch to Automatic Mode |
| 0x09 | 0x01 | Command Code 09: Switch to Manual Mode |
However, OMRON's worked example for the Run/Stop command (Manual page 4-14) shows the data word sent as 0x0101 for Stop and 0x0000 for Run. The low byte is the actual command parameter, and the high byte is duplicated (a CompoWay/F artifact carried into Modbus mode). The two data patterns that are accepted in practice are:
- Switch to Manual: data word = 0x0009 or 0x0901
- Switch to Auto: data word = 0x0009 or 0x0900
Field testing indicates that most E5EC firmware revisions accept 0x0009 followed by 0x0001 as a two-step transaction: first write the command selector 0x09, then write the parameter. In practice, writing the data word as the little-endian 16-bit value 0x0901 in a single FC 06 packet is the most reliable single-shot approach for Manual mode. If the controller returns exception code 0x02 (Illegal Data Address) when writing to 0x0000, the unit is in variable-area mode and Operation Commands have not been enabled — see Section 6 below.
3.1.2 Message Examples (Modbus TCP)
MBAP Header (7 bytes): Transaction ID (2) | Protocol ID = 0x0000 (2) | Length (2) | Unit ID = 0x01 (1)
Switch to Manual — FC 06:
00 01 00 00 00 06 01 06 00 00 09 01
Decoded:
- 00 01 — Transaction ID 1
- 00 00 — Modbus Protocol
- 00 06 — Length 6 bytes follows
- 01 — Unit ID 1
- 06 — Function Code 06 (write single register)
- 00 00 — Register address 0x0000 (command channel)
- 09 01 — Data word: command 0x09, parameter 0x01 (Manual)
Switch to Auto — FC 06:
00 02 00 00 00 06 01 06 00 00 09 00
3.2 Method B — Front-Panel PF Key (Indirect)
Register 0x3200 (PF Setting) accepts value 7 to bind the front-panel PF key to Auto/Manual switching. This is not a remote-control method — it only enables the physical key. The remote method is Method A above.
3.3 Method C — Event Input Contact (Hardware)
Register 0x2E0A (Event Input Assignment) accepts value 2 to map Event 1 to Auto/Manual switching. This requires the Event Input option on the E5EC hardware (E5EC-x4x or E5EC-x8x models). The event input acts as a contact closure — Modbus cannot drive it directly, so this method is not useful for purely network-based control.
4. Writing a Manual MV Value
Once the controller is in Manual mode, write the desired MV to register 0x2600 (decimal 9728) using FC 06 or FC 16. The data is a 16-bit signed integer representing the MV in tenths of a percent.
Scaling formula:
MV_percent = Register_value / 10
Where Register_value is the signed 16-bit integer (range −50 to 1050 for standard control). The full engineering range is therefore:
| Engineering Value | Register (hex, 16-bit signed) | Decimal |
|---|---|---|
| −5.0% | 0xFFCE | −50 |
| 0.0% | 0x0000 | 0 |
| 50.0% | 0x01F4 | 500 |
| 100.0% | 0x03E8 | 1000 |
| 105.0% | 0x041A | 1050 |
Example — write 65.5% manual MV:
Register value = 65.5 × 10 = 655 = 0x028F
Modbus TCP FC 06 packet:
00 03 00 00 00 06 01 06 26 00 02 8F
5. Reading the Active Auto/Manual State
The actual current mode (Auto or Manual) is reported at the status bit field. The E5EC exposes this through register 0x300F for the Add-Auto/Manual flag, and through a derived Operation Command status readable from the communications manual section on Operation Status. In practice, the most reliable way to confirm the mode is to:
- Read 0x300F to see whether the Auto/Manual Select parameter is enabled at all (1 = enabled, 0 = hidden).
- Track the last successful Command Code 09 write your master sent — the E5EC does not echo the active mode in a single dedicated status register in all firmware versions, so state must be tracked by the master.
6. Enabling Operation Commands (Pre-Configuration)
Operation commands are gated by the controller's Communications Write Enable parameter. If writes to 0x0000 return exception 0x02, navigate the front panel to:
- Initial Setting Level (hold the O key for 3 seconds).
- Communications Setting > Communications Writing = ON.
- For PV/SV writes, ensure Write to setting value is enabled.
For the Auto/Manual command specifically, Operation Command in the same menu must be set to Enabled. The default on most E5EC units is Disabled, which is why writes to 0x0000 for the Run/Stop or Auto/Manual command are rejected out-of-the-box.
7. Step-by-Step Commissioning Procedure
-
Verify IP connectivity. Ping the E5EC (default 192.168.250.1). Confirm Modbus TCP port 502 is reachable using
Test-NetConnection 192.168.250.1 -Port 502(PowerShell) ornc -zv 192.168.250.1 502(Linux). - Read PV (register 0x0000/0x0001, 4-byte mode) using FC 03 to confirm frame construction. Decode per the E5EC scaling factor (typically divide by 10 for temperature in °C).
- Read SV (register 0x0104) using FC 03 to confirm parameter-area reads work.
- Write SV using FC 06 with a known value (e.g., 250 for 25.0°C) and confirm on the front panel.
- Enable Operation Commands at the front panel (Section 6).
- Send Command Code 09 to Manual (Section 3.1.2). Confirm the front panel shows MAN instead of AUTO.
- Write Manual MV to register 0x2600 (Section 4). Confirm output percentage on the front panel matches the engineering value ×10.
- Send Command Code 09 to Auto. Confirm return to AUTO.
8. Verification Checklist
| Check | Expected | Diagnostic |
|---|---|---|
| TCP connect to :502 | Successful | Wireshark → Modbus protocol decoder |
| FC 03 read 0x0000 | PV value, integer scaling | If exception 0x02: wrong register map (verify E5EC has Modbus TCP option) |
| FC 06 write 0x0000 data 0x0901 | Controller enters Manual | If exception 0x02: Operation Commands disabled (see Section 6) |
| FC 06 write 0x2600 = 500 | MV reads 50.0% on front panel | If ignored: controller not in Manual mode |
| Mode persists after power cycle | Yes (Manual state is retained) | E5EC non-volatile memory holds last mode |
9. Troubleshooting Matrix
| Symptom | Likely Cause | Fix |
|---|---|---|
| FC 06 write to 0x0000 returns exception 02 | Operation Commands disabled in front-panel menu | Enable per Section 6 |
| Auto/Manual does not change after write | Wrong data field encoding (0x0009 vs 0x0901) | Try 0x0901 (Manual) and 0x0900 (Auto) |
| Register 0x300F always reads 1 | Correct behavior — this is the parameter enabled flag, not a control | Use Command Code 09 instead |
| MV write accepted but no output change | Run/Stop command is in Stop state, or controller is in Auto mode | Send Command Code 01 (Run) and Command Code 09 (Manual) |
| Exception 03 (Illegal Data Value) on MV write | Value out of range or wrong scaling | Verify signed 16-bit, range −50 to 1050 |
| PV reads as zero constantly | Sensor break or input assignment wrong | Check Input Type parameter at front panel |
| Modbus TCP connection drops after 1 minute | E5EC default keep-alive is short | Set master to send a request at least every 30 seconds |
10. Field-Proven Notes
- The E5EC's Modbus TCP implementation is a thin layer over CompoWay/F, OMRON's proprietary serial protocol. Some byte-order quirks (e.g., 0x0101 instead of 0x0001 for command data) are CompoWay/F artifacts and not bugs.
- The E5EC supports both Modbus FC 06 (write single) and FC 16 (write multiple). For Operation Commands, always use FC 06 — FC 16 with multiple registers is silently ignored for the command channel.
- Default serial framing on E5EC RS-485 ports is 7-E-2 (7 data bits, even parity, 2 stop bits), which trips up engineers coming from RS-485 devices that use 8-N-1. This is documented in the Communications Manual and is a common first-day issue.
- The E5EC's "Element" in OMRON documentation is a 16-bit Modbus register, not a sensor element. The "Variable area" is the register map, not a flow-meter section.
- Register addresses in OMRON's documentation are zero-based hex. ModScan and similar tools use decimal. Convert before entering into a tool: 0x300F = 12303 decimal.
11. Quick-Reference Card
| Goal | Function Code | Register (hex) | Data Word (hex) |
|---|---|---|---|
| Read PV (4-byte) | 03 | 0000, qty 2 | — |
| Read SV | 03 | 0104 | — |
| Write SV | 06 | 0104 | SV × 10 (signed int) |
| Switch to Manual | 06 | 0000 | 0901 |
| Switch to Auto | 06 | 0000 | 0900 |
| Run | 06 | 0000 | 0000 |
| Stop | 06 | 0000 | 0101 |
| Write Manual MV | 06 | 2600 | MV% × 10 (signed int, −50 to 1050) |
For full register detail, the authoritative reference is the OMRON E5EC Communications Manual (H186-E1-04 or later revision), Section 4-4 and Section 5. The E5EC product family landing page at automation.omron.com lists the current catalog numbers and option-suffix combinations that include Modbus TCP support.
What Modbus function code does the OMRON E5EC use to switch to Manual mode?
Function Code 06 (Write Single Register). Target register is 0x0000 (the operation-command channel, not a variable-area register), with the data word set to 0x0901 for Manual or 0x0900 for Auto. Function Code 16 is not accepted for the command channel.
Why does register 0x300F always read 1 and ignore writes?
Register 0x300F is the Auto/Manual Select Addition status flag — it indicates whether the Auto/Manual parameter is enabled in the controller's Operation Mode menu, not the active mode. It is read-only in Modbus and cannot be written. Use Operation Command Code 09 to actually switch modes.
How do I enable Operation Commands on the E5EC?
From the front panel, hold the O key for 3 seconds to enter the Initial Setting Level, then go to Communications Setting → Communications Writing = ON, and confirm Operation Command = Enabled. The default is Disabled, which causes Modbus writes to the command channel (0x0000) to return exception 0x02.
What is the scaling factor for the E5EC's Manual MV register?
Register 0x2600 (Manual MV) uses signed 16-bit integer data with a divide-by-10 scaling factor. To write 65.5%, send 655 (0x028F). The valid range for standard control is −50 to 1050, representing −5.0% to 105.0%.
Can I switch Auto/Manual and write the MV in a single Modbus transaction?
No. Auto/Manual switching requires a separate FC 06 write to 0x0000 (Command Code 09) before the MV write to 0x2600 will be accepted. The controller silently ignores MV writes while in Auto mode. Plan a two-step sequence in your master logic.