Eurotherm 2404/2408 controller (needs comms module)
Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based
as on the wire. Word order and scaling are confirmed at the hardware-verified rung and at no rung below it.
interop-verified
Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
| point | address (0-based) | type | scale | unit |
| process_variable | 1 | I16 | 1 | |
| target_setpoint | 2 | I16 | 1 | |
| output_level | 3 | I16 | 1 | |
| working_setpoint | 5 | I16 | 1 | |
| valve_position | 53 | I16 | 1 | |
| heater_current | 80 | I16 | 1 | |
| alarm_1_setpoint | 13 | I16 | 1 | |
| alarm_2_setpoint | 14 | I16 | 1 | |
| alarm_3_setpoint | 81 | I16 | 1 | |
| alarm_4_setpoint | 82 | I16 | 1 | |
| auto_manual_select | 273 | U16 | 1 | |
| fast_status_byte | 74 | U16 | 1 | |
| summary_output_status_word | 75 | U16 | 1 | |
| control_status_word | 76 | U16 | 1 | |
| instrument_status_word | 77 | U16 | 1 | |
| digital_input_status_word | 87 | U16 | 1 | |
| input_1_measured_value | 202 | I16 | 1 | |
| input_2_measured_value | 208 | I16 | 1 | |
| input_1_cold_junction_temp | 215 | I16 | 1 | |
| input_2_cold_junction_temp | 216 | I16 | 1 | |
| process_variable_float | 32770 | F32BE | 1 | |
| target_setpoint_float | 32772 | F32BE | 1 | |
| output_level_float | 32774 | F32BE | 1 | |
| working_setpoint_float | 32778 | F32BE | 1 | |
| valve_position_float | 32874 | F32BE | 1 | |
| heater_current_float | 32928 | F32BE | 1 | |
link settings as documented (unverified): RTU; baud 1200/2400/4800/9600/19200; FC 03,04,16
⚠ Broadcast is only recommended for systems where failure to communicate a value due to physical failure of wiring or other equipment will not cause damage to equipment. — Starkest reads only; we never write a control register.
bench facts as documented (unverified)
| terminals | HF, HE, HD for RS232/RS485; F1-F5/HE, HF, HB, HC, HD for RS422 |
| A/B polarity | RX+, RX-, TX+, TX- for RS422; HF (B/B+), HE (A/A+) for RS485 |
| termination | 220 ohm termination resistor on Rx terminals of last controller in chain |
| isolation | fully isolated communications circuitry |
| shield/ground | copper braid shield connected to a noise free ground |
| broadcast | supported |
| protocol notes | For 2400 firmware versions 3.00 and greater, a facility allows block writes to continue even if values in the block are not currently writeable by writing 1 to register 220. |
| model register | 12544 |
| doc revision | Part No HA026230 Issue 2.0 Feb-00 |
| firmware applicability | 2400 firmware versions 3.00 and greater |
field reports — community-sourced, unverified (checked 2026-06-11)
- Data Register Skew Problem: When communicating with multiple Eurotherm 2404 controllers via a Moxa MGate MB3480 gateway to Ignition, registers are offset/skewed by one place per increasing Modbus address (e.g., address 9 is offset by 1 compared to address 8). [source]
- RS-485 Signal Polarity Reversal: Eurotherm controllers use a non-standard labeling convention where terminal assignments (HE and HF) can result in reversed polarity when connected directly to some Modbus RTU masters (such as Mitsubishi GOT HMIs) using documented pinouts, requiring swapping the RS-485 differential pairs. [source]
- confirmed: Part No HA026230 Issue 2.0 Feb-00 — confirmed by Eurotherm 2000 Series Communications Handbook [1.1.3]
- confirmed: For 2400 firmware versions 3.00 and greater, a facility allows block writes to continue even if values in the block are not currently writeable by writing 1 to register 220 — confirmed by Eurotherm 2000 Series Communications Handbook
- confirmed: process_variable @ 1, target_setpoint @ 2, output_level @ 3, working_setpoint @ 5, valve_position @ 53, heater_current @ 80 — confirmed by Eurotherm 2000 Series Communications Handbook
- confirmed: alarm_1_setpoint @ 13, alarm_2_setpoint @ 14, alarm_3_setpoint @ 81, alarm_4_setpoint @ 82 — confirmed by Eurotherm 2000 Series Communications Handbook
- confirmed: fast_status_byte @ 74, summary_output_status_word @ 75, control_status_word @ 76, instrument_status_word @ 77, digital_input_status_word @ 87 — confirmed by Eurotherm 2000 Series Communications Handbook
- confirmed: input_1_measured_value @ 202, input_2_measured_value @ 208, input_1_cold_junction_temp @ 215, input_2_cold_junction_temp @ 216 — confirmed by Eurotherm 2000 Series Communications Handbook
- confirmed: process_variable_float @ 32770, target_setpoint_float @ 32772, output_level_float @ 32774, working_setpoint_float @ 32778, valve_position_float @ 32874, heater_current_float @ 32928 — confirmed by Eurotherm 2000 Series Communications Handbook (IEEE float address calculation formula: Modbus_Address * 2 + 0x8000)
The trust ladder
Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.
- generated — A prompt produced it. Unproven — anyone can regenerate this.
- structure-verified — Decode path is structurally sound (addresses, widths, finite values). Does NOT prove word order or scaling.
- interop-verified — Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
- simulator-verified — Decoded correctly against a protocol emulator seeded with known-true values — catches word-order/scaling errors vs the emulator, not the physical device.
- hardware-verified x1 — Matched a real device with operator-attested readings as ground truth — the only rung that confirms word order + scaling on the wire.