Easy Modbus
  1. Home
  2. Modbus register maps
  3. AERCO
  4. C-More Boiler Controller (Benchmark / KC series)

Boiler / water heater controller · Modbus register map

AERCO C-More Boiler Controller (Benchmark / KC series) Modbus register map

Updated 16 October 2026

Short answer

The C-More controller on AERCO Benchmark and KC Series units is a Modbus RTU slave on RS-485, normally driven by an AERCO BMS/ACS or a third-party EMS. A master can monitor temperatures, firing rate, flame strength, run hours and status messages, and can control the unit either by writing a network setpoint (Remote Setpoint mode) or a firing rate (Direct Drive mode). Temperatures are transferred as 0-1000 counts that must be converted with AERCO's equations.

This page lists 57 Modbus registers for the AERCO C-More Boiler Controller (Benchmark / KC series) — 34 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from AERCO’s own free documentation (linked below) and checked against it.

Manufacturer
AERCO
Model
C-More Boiler Controller (Benchmark / KC series)
Equipment type
Boiler / water heater controller
Registers
57 (34 writable)
Transport
Modbus RTU
Default unit ID
Not stated
Default serial
9600 baud
Documented addressing
0-based (the number printed is the address on the wire)
32-bit word order
CDAB low word first (word-swapped)
Firmware
C-More software 2.00 or higher
Also known as
C-More, Benchmark, KC1000, KC Series, Benchmark boiler, Benchmark water heater
Source document
Modbus Communications User Manual - C-More Controller, Boiler Management System (BMS/BMS II), AERCO Control System (ACS) · OMM-0035_D / GF-114 · rev. 2026-04-07
Download CSV all columns JSON Manufacturer PDF ↗

Integration notes: AERCO C-More Boiler Controller (Benchmark / KC series)

Integration in brief

Give the C-More a Comm Address (1-127) in its Setup menu, set Boiler Mode to Remote Setpoint or Direct Drive and Remote Signal to Network, then write holding register 0 (setpoint counts) or 1 (fire rate %) at least every 10 seconds. Read input registers 1-16 for status, temperatures, fire rate and run hours.

Minimum registers to map

Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.

RegisterNameTypeWhyAccess
HR 0Net Remote Set PointUINT16Network setpoint (Remote Setpoint mode)Read/write
HR 1Net Direct DriveUINT16Network fire rate (Direct Drive mode)Read/write
HR 12Boiler ModeUINT16Boiler modeRead/write
IR 1Unit StatusUINT16Unit statusRead
IR 2Outlet TempUINT16Outlet temperatureRead
IR 8Fire Rate OutUINT16Fire rate outRead
IR 15Flame StrengthUINT16Flame strengthRead
IR 0Default Message Display CodeUINT16Status / fault message codeRead

Enable Modbus control & writes

Setup menu: Comm Address 1-127 (0, the default, disables Modbus). Configuration menu: Boiler Mode = Direct Drive or Remote Setpoint and Remote Signal = Network. Changing settings needs the right password level; register 2 holds the Modbus-port password and writes to protected registers fail with exception 02 until it matches.

Communication loss & watchdog

Fixed 10 s heartbeat: each received Net Direct Drive or Net Remote Setpoint write resets it. If it expires the controller shows MODBUS COMM FAULT and falls back to the Failsafe Mode in holding register 24 (Shutdown or Constant Setpoint).

Byte order & addressing

Network setup

Watch out for

AERCO C-More Boiler Controller (Benchmark / KC series) Modbus registers

Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.

57 of 57 shown
AERCO C-More Boiler Controller (Benchmark / KC series) Modbus register map
TableAddressNameDescriptionTypeOrderScaleUnitsAccessValues / bits
IR0doc 0 (0x0000)Default Message Display CodeCurrent display status/fault message (codes 1-64).UINT16Read1 = DISABLED; 2 = STANDBY; 3 = DEMAND DELAY; 4 = PURGING; 5 = IGNITION TRIAL; 6 = FLAME PROVEN; 7 = WARMUP; 8 = HIGH WATER TEMP SWITCH OPEN; 9 = LOW WATER LEVEL; 10 = LOW GAS PRESSURE; 11 = HIGH GAS PRESSURE; 12 = INTERLOCK OPEN; 13 = DELAYED INTERLOCK OPEN; 14 = AIRFLOW FAULT DURING PURGE; 15 = SSOV FAULT DURING PURGE; 16 = PRG SWTCH OPEN DURING PURGE; 17 = IGN SWTCH OPEN DURING IGNITION; 18 = AIRFLOW FAULT DURING IGN; 19 = AIRFLOW FAULT DURING RUN; 20 = SSOV FAULT DURING IGN; 21 = SSOV FAULT DURING RUN; 22 = FLAME LOSS DURING IGN; 23 = FLAME LOSS DURING RUN; 24 = HIGH EXHAUST TEMPERATURE; 25 = LOSS OF POWER; 26 = LOSS OF SENSOR; 27 = LOSS OF SIGNAL; 28 = HIGH O2 LEVEL; 29 = LOW O2 LEVEL; 30 = HIGH CO LEVEL; 31 = SSOV RELAY FAILURE; 32 = RESIDUAL FLAME; 33 = HEAT DEMAND FAILURE; 34 = IGN SWTCH CLOSED DURING PURGE; 35 = PRG SWTCH CLOSED DURING IGNITION; 36 = SSOV SWITCH OPEN; 37 = IGNITION BOARD COMM FAULT; 38 = WAIT; 39 = DIRECT DRIVE SIGNAL FAULT; 40 = REMOTE SETPT SIGNAL FAULT; 41 = OUTDOOR TEMP SENSOR FAULT; 42 = OUTLET TEMP SENSOR FAULT; 43 = FFWD TEMP SENSOR FAULT; 44 = HIGH WATER TEMPERATURE; 45 = LINE VOLTAGE OUT OF PHASE; 46 = STEPPER MOTOR FAILURE; 47 = SETPT LIMITING ACTIVE; 48 = MODBUS COMM FAULT; 49 = WAIT IGNITION RETRY; 50 = WAIT FAULT PURGE; 51 = WAIT RETRY PAUSE; 52 = EXHAUST TEMP SENSOR SHORT; 53 = EXHAUST TEMP SENSOR OPEN; 54 = WARNING EXHAUST TEMP HIGH; 55 = EXHAUST TEMP HIGH; 56 = INLET WATER TEMP SENSOR SHORT; 57 = INLET WATER TEMP SENSOR OPEN; 58 = WARNING IN WATER TEMP HIGH; 59 = WARNING IN WATER TEMP LOW; 60 = INLET GAS PRESS SENSOR OPEN; 61 = GAS PLATE DP SENSOR OPEN; 62 = INLET WATER FLOW SENSOR OPEN; 63 = WARNING IN WTR FLOW LOW; 64 = INLET WATER HIGH FLOW
IR1doc 1 (0x0001)Unit StatusUINT16Read0 = Disabled; 1 = Standby; 2 = Manual; 3 = Remote; 4 = Auto; 5 = Fault
IR2doc 2 (0x0002)Outlet TempOutlet temperature as DEGREES_1 counts (0-1000); °F = floor((counts×230+500)/1000)+20.UINT16countsRead
IR3doc 3 (0x0003)Inlet TempInlet temperature, DEGREES_1 counts; °F = floor((counts×230+500)/1000)+20.UINT16countsRead
IR4doc 4 (0x0004)Aux TempAux temperature, DEGREES_1 counts; °F = floor((counts×230+500)/1000)+20.UINT16countsRead
IR5doc 5 (0x0005)Outdoor TempOutdoor temperature, DEGREES_2 counts; °F = floor((counts×330+500)/1000)-80.UINT16countsRead
IR6doc 6 (0x0006)Exhaust TempPrinted as DEGREES_2 (exhaust log uses DEGREES_3); °F = floor((counts×330+500)/1000)-80.UINT16countsRead
IR7doc 7 (0x0007)FFWD TempFeed-forward (header) temperature, DEGREES_1 counts; °F = floor((counts×230+500)/1000)+20.UINT16countsRead
IR8doc 8 (0x0008)Fire Rate OutFiring rate output (0-100).UINT16%Read
IR9doc 9 (0x0009)O2 Level0-25 %.UINT16%Read
IR10doc 10 (0x000A)CO Level0-500 ppm.UINT16ppmRead
IR11doc 11 (0x000B)Run CyclesLow word at 11, high word (0-15) at 12; range 0-999,999.UINT32CDABRead
IR13doc 13 (0x000D)Run HoursLow word at 13, high word (0-15) at 14; range 0-999,999.UINT32CDABhRead
IR15doc 15 (0x000F)Flame StrengthUINT16%Read
IR16doc 16 (0x0010)Active Set pointDEGREES_1 counts; °F = floor((counts×230+500)/1000)+20.UINT16countsRead
IR17doc 17 (0x0011)Fire Rate InUINT16%Read
IR18doc 18 (0x0012)Manual Fire RateOnly meaningful in Manual mode from the front panel.UINT16%Read
IR19doc 19 (0x0013)Comm AddressModbus address 0-127; 0 (default) disables Modbus on the controller.UINT16Read
IR20doc 20 (0x0014)Software VersionUINT16Read
IR23doc 23 (0x0017)Fault Log CodeFault code of the selected fault-log entry.UINT16Read
IR24doc 24 (0x0018)Fault Log CycleCycle count of the selected fault-log entry (low word first).UINT32CDABRead
IR26doc 26 (0x001A)Fault Log DateDate of the selected fault-log entry, 1 count per day.UINT16daysRead
IR27doc 27 (0x001B)Fault Log TimeMinutes since midnight (0-1439).UINT16minRead
HR0doc 0 (0x0000)Net Remote Set PointRemote Setpoint mode only; DEGREES_1 counts; °F = floor((counts×230+500)/1000)+20.UINT16countsRead/write
HR1doc 1 (0x0001)Net Direct DriveFire rate from the network; writable only in Direct Drive mode.UINT16%Read/write
HR2doc 2 (0x0002)Modbus PasswordSecurity password for the RS-485 Modbus port (default 0).UINT16Read/write
HR3doc 3 (0x0003)PasswordSecurity password for the RS-232 front-panel port (default 0).UINT16Read/write
HR4doc 4 (0x0004)Internal Set PointDEGREES_1 counts (default 130 °F); °F = floor((counts×230+500)/1000)+20.UINT16countsRead/write
HR6doc 6 (0x0006)TimeController clock, minutes since midnight (0-1439).UINT16minRead/write
HR7doc 7 (0x0007)DateController date, days since 1 Jan 2000.UINT16daysRead/write
HR8doc 8 (0x0008)Unit of TempDisplay unit (default °F).UINT16Read/write0 = Degrees Fahrenheit; 1 = Degrees Celsius
HR9doc 9 (0x0009)Baud RateRS-232 front-panel port only (default 9.6k).UINT16Read/write0 = 2400; 1 = 4800; 2 = 9600; 3 = 19200
HR10doc 10 (0x000A)Unit TypeUINT16Read/write0 = Boiler; 1 = Water Heater
HR11doc 11 (0x000B)Unit SizeUINT16Read/write0 = 0.5 MBTU; 1 = 1 MBTU; 2 = 1.5 MBTU; 3 = 2 MBTU; 4 = 2.5 MBTU; 5 = 3 MBTU
HR12doc 12 (0x000C)Boiler ModeControl mode (default Constant Setpt).UINT16Read/write0 = Constant Setpt; 1 = Remote Setpt; 2 = Direct Drive; 3 = Combo Unit; 4 = Outdoor Reset
HR13doc 13 (0x000D)Remote SignalSource of the remote signal; Network = Modbus.UINT16Read/write0 = 4-20 mA / 1-5 V; 1 = 0-20 mA / 0-5 V; 2 = PWM Input; 3 = Network
HR14doc 14 (0x000E)Bldg Ref TempOutdoor-reset reference, DEGREES_1 counts; °F = floor((counts×230+500)/1000)+20.UINT16countsRead/write
HR15doc 15 (0x000F)Reset RatioOutdoor-reset ratio 0.1-9.9 (counts = ratio x 10; default 1.2).UINT16× 0.1Read/write
HR16doc 16 (0x0010)Outdoor Sensor EnableUINT16Read/write0 = False; 1 = True
HR17doc 17 (0x0011)System Start TempDEGREES_2 counts (default 60 °F); °F = floor((counts×330+500)/1000)-80.UINT16countsRead/write
HR18doc 18 (0x0012)Set Point Lo LimitDEGREES_1 counts (default 60 °F); °F = floor((counts×230+500)/1000)+20.UINT16countsRead/write
HR19doc 19 (0x0013)Set Point Hi LimitDEGREES_1 counts (default 200 °F); °F = floor((counts×230+500)/1000)+20.UINT16countsRead/write
HR20doc 20 (0x0014)Temp Hi LimitOutlet limit, DEGREES_1 counts (default 210 °F); °F = floor((counts×230+500)/1000)+20.UINT16countsRead/write
HR21doc 21 (0x0015)Max Fire Rate40-100 % (default 100).UINT16%Read/write
HR22doc 22 (0x0016)Pump Delay Timer0-30 min.UINT16minRead/write
HR23doc 23 (0x0017)Aux Start On Delay0-120 s.UINT16sRead/write
HR24doc 24 (0x0018)Failsafe ModeAction on loss of the remote/Modbus signal.UINT16Read/write0 = Shutdown; 1 = Constant Setpoint
HR25doc 25 (0x0019)Low Fire Timer2-60 s (default 2).UINT16sRead/write
HR26doc 26 (0x001A)Prop BandProportional band, ABS_DEG_1 counts (a temperature difference); see notes for conversion.INT16countsRead/write
HR27doc 27 (0x001B)Integral Gain0.00-2.00.UINT16× 0.01Read/write
HR28doc 28 (0x001C)Derivative Time0.00-2.00 min.UINT16× 0.01minRead/write
HR29doc 29 (0x001D)Min Load AdjustWater heater only; ABS_DEG_1 counts (temperature difference); see notes for conversion.INT16countsRead/write
HR30doc 30 (0x001E)Max Load AdjustWater heater only; ABS_DEG_1 counts (temperature difference); see notes for conversion.INT16countsRead/write
HR31doc 31 (0x001F)Outlet FeedbackWater heater only (default On).UINT16Read/write0 = Off; 1 = On
HR60doc 60 (0x003C)Set Point LimitingUINT16Read/write0 = Disabled; 1 = Enabled
HR61doc 61 (0x003D)Set Point Limit BandABS_DEG_1 counts (temperature difference); see notes for conversion.INT16countsRead/write
HR67doc 67 (0x0043)Sensor Log IntervalUINT16Read/write0 = Off; 1 = 1 min; 2 = 5 min; 3 = 15 min; 4 = 30 min; 5 = 1 h; 6 = 6 h; 7 = 12 h; 8 = 24 h

Notes on this map

Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.

Questions about the AERCO C-More Boiler Controller (Benchmark / KC series)

What Modbus registers does the AERCO C-More Boiler Controller (Benchmark / KC series) have?

This map lists 57 registers: 23 input registers, 34 holding registers. 34 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.

Are the AERCO C-More Boiler Controller (Benchmark / KC series) Modbus addresses 0-based or 1-based?

The manufacturer's document numbers registers 0-based (the number printed is the address on the wire). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. The manual lists generic Modbus data addresses in decimal and hex (e.g. Outlet Temp 2 (0x0002)) and states that BAS tools using 30001/40001 notation add 30001/40001 to them. The listed number is the wire address.

What byte order does the AERCO C-More Boiler Controller (Benchmark / KC series) use for 32-bit values?

Multi-register values in this map use CDAB (low word first (word-swapped)). Set your client to this order for every 32/64-bit value in the table.

What are the minimum Modbus registers to integrate the AERCO C-More Boiler Controller (Benchmark / KC series)?

Start with HR 0 Net Remote Set Point (Network setpoint (Remote Setpoint mode)); HR 1 Net Direct Drive (Network fire rate (Direct Drive mode)); HR 12 Boiler Mode (Boiler mode); IR 1 Unit Status (Unit status); IR 2 Outlet Temp (Outlet temperature); IR 8 Fire Rate Out (Fire rate out); IR 15 Flame Strength (Flame strength); IR 0 Default Message Display Code (Status / fault message code).

How do I enable Modbus control of the AERCO C-More Boiler Controller (Benchmark / KC series)?

Setup menu: Comm Address 1-127 (0, the default, disables Modbus). Configuration menu: Boiler Mode = Direct Drive or Remote Setpoint and Remote Signal = Network. Changing settings needs the right password level; register 2 holds the Modbus-port password and writes to protected registers fail with exception 02 until it matches.

What happens when the AERCO C-More Boiler Controller (Benchmark / KC series) loses Modbus communication?

Fixed 10 s heartbeat: each received Net Direct Drive or Net Remote Setpoint write resets it. If it expires the controller shows MODBUS COMM FAULT and falls back to the Failsafe Mode in holding register 24 (Shutdown or Constant Setpoint).

Where is the official AERCO C-More Boiler Controller (Benchmark / KC series) Modbus documentation?

The source is Modbus Communications User Manual - C-More Controller, Boiler Management System (BMS/BMS II), AERCO Control System (ACS) (OMM-0035_D / GF-114), revision 2026-04-07, published free by AERCO at https://www.aerco.com/dfsmedia/0533dbba17714b1ab581ab07a4cbb521/58215-source/639112726810000000/omm-0035-0b-gf-114-modbus-communications-manual-05-18-12-0.pdf.

Source: Modbus Communications User Manual - C-More Controller, Boiler Management System (BMS/BMS II), AERCO Control System (ACS) · OMM-0035_D / GF-114 · rev. 2026-04-07. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.